1. java中变量a是double型的。怎么判断a是否为null
Double a = Double.NaN;
//第一种 前两种要求类型是Double即包装类
System.out.println(a.equals(Double.NaN));
//第二种
System.out.println(a.equals(0.0d / 0.0));
//第三种 使用Double的静态方法,方法实现就是第四种 类型无要求
System.out.println(Double.isNaN(a));
//第四种 利用NaN自己和自己不相等的特性,
//要求类型必须是double,不能是包装类,否则结果是false
//因为包装类是引用类型,比较的!=是地址的比较而不是值的比较。
double b = Double.NaN;
System.out.println(b != b);
(1)javadouble空扩展阅读:
实际开发中常常遇到这种需求:double类型的数据如果为空,就展示空字符串;如果为0,就展示0。
一般是这样做,新建一个model,和数据库里的字段,数据类型一一对应。然后把数据库里的数据取到这个model的集合里,然后进行进一步处理。
这时候就有个问题,比如double类型会默认初始化为0,这样就无法区分数据库里是0值还是null。
解决方法一
再从数据库中获取你所需要的数据的条数。这样如果值为0且数据条数小于等于0,这种情况就是空值;否则就是0.
解决方法二
可空类型。double,有0值就是0,没有值就是null。
2. java double类型
double类型直接进行运算会出现精度问题,可先转换为字符串之后再进行运算。
import java.math.BigDecimal;
public class Arith {
// 默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
// 这个类不能实例化
private Arith() {
}
public static double add(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.add(b2).doubleValue();
}
public static double sub(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.subtract(b2).doubleValue();
}
public static double mul(double v1, double v2)
{
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return
b1.multiply(b2).doubleValue();
}
public static double div(double v1, double v2) {
return
div(v1, v2, DEF_DIV_SCALE);
}
public static double div(double v1, double v2, int scale)
{
if (scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b1 = new
BigDecimal(Double.toString(v1));
BigDecimal b2 = new
BigDecimal(Double.toString(v2));
return b1.divide(b2, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v, int scale) {
if
(scale < 0) {
throw new
IllegalArgumentException(
"The
scale must be a
positive integer or
zero");
}
BigDecimal b = new
BigDecimal(Double.toString(v));
BigDecimal one = new
BigDecimal("1");
return b.divide(one, scale,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class test {
public static void main(String[] args)
{
double d1=0.2;
double d2=0.1;
double
d3=d1+d2;
System.out.println(Arith.add(d1,
d2));
System.out.println(Arith.sub(d1,
d2));
System.out.println(d3);
}
}
3. Java基础double
因为你用的是double类型,这个类型很精确,一般用的是float,
把double d = a + b +c;改成
float d = (float)(a + b +c);就行了
4. java中double型小数位数问题
o
~!
我
也再学java
不过我看的比较快
这也这要是你的表达式的问题
如果你自己不加其他的限制条件的话就是默认的】
首先你要知道一个double型,最多可以表达15位小数。
像你的第一个本身就是只有一位小数,它不会自己去添加0的
而后面的却是除不尽的,,但是double型的最多也只有15~16位,所以也就是保留15~16位了~!
以后有空可以多交流一下
上面的说的对,浮点小数都不能很精确的表达一个小数
5. Java里怎么将double保留三位小数,不足的用空格填充(不出现小数点)
DecimalFormat df = new DecimalFormat("0.000");
df.format(12.3456);
这个的结果是12.346,四舍五入,不足位的用0 填充,比如df.format(1.23)结果是1.230。
6. java 怎样去掉double的空格
double是一个类
而double是一种基本数据类型
创建一个类的对象需要使用new运算符
不知道楼主这么做的意义在何?
double
d=a;
double
d=new
double(d);
这两个是对象和变量的区别
7. java中Double类型报空指针了怎么办
怎么办!
那要看你这边需求了,对这个Double类型的数据是否需要处理,如果是个无关紧要的数字那就记录个日志,如果是代表钱什么的 需要给用户提示不能为空。
你这个问题问的没头没脑的。。。也不知道怎么答
8. java中float和double的取值范围是什么
float:4字节(32bit),IEEE 754. 取值范围:
[-3.40282346638528860e+38 , -1.40129846432481707e-45] ∪ [1.40129846432481707e-45 ~ 3.40282346638528860e+38] 。
double: 8字节(64bit) ,IEEE 754. 取值范围:
[-1.79769313486231570e+308,-4.94065645841246544e-324] ∪ [4.94065645841246544e-324,1.79769313486231570e+308] 。
(8)javadouble空扩展阅读
基本数据类型的特点,位数,最大值和最小值。
1、
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
2、
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
3、
基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808 (-2的63次方)
最大值:Long.MAX_VALUE=9223372036854775807 (2的63次方-1)
4、
基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)
5、
基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)
9. Java泛型 Double
packagecn.org.ibiology;
classpointing<T>{
privateTx;
privateTy;
//你这里指定返回的结果为空(void),你把这里的void改成double就能解决问题
publicvoidsetX(Tx){
this.x=x;
}
//你这里指定返回的结果为空(void),你把这里的void改成double就能解决问题
publicvoidsetY(Ty){
this.y=y;
}
publicTgetX(){
returnx;
}
publicTgetY(){
returny;
}
}
publicclassFanxing{
publicstaticvoidmain(String[]args){
pointing<Double>point=newpointing<Double>();
//这里执行set以后,你是把结果返回给了两个变量x和y,也就是说执行set是需要返回结果的,但是你上面对set的声明指定不返回结果,所以矛盾了
doublex=point.setX(23.2);
doubley=point.setY(22.2);
System.out.println(x);
System.out.println(y);
}
}
有什么问题你都可以追问我,没问题,望采纳,谢谢
10. java double是什么类型
double: 64位双精度浮点数 ,范围10^-308~10^308和-10^-308~-10^308
与之比较对应的是float,32位单精度浮点数 ,范围10^-38~10^38和-10^-38~-10^38
对我们这种程序员来说,能用float就不用double,因为float比double运算速度快、占用资源(内存)少。