我有这个代码:
Long dval = new Long((new Date()).getTime());
System.out.println("ogval:"+dval);
Double dd = (double)dval;
System.out.println("dval:"+dd);
这是输出:
ogval:1381490769636
dval:1.381490769636E12
当我将值转换为 Double 时,它会添加一个小数点。我可以进行类型转换并按原样获取 double 值吗?
期望的输出是:
ogval:1381490769636
dval:1381490769636
我有一个函数,其参数仅接受 double 值。当我尝试传递时间戳时,它会传递方法内的十进制值。 我无法编辑该函数,因为它是某个包的内置函数。
最佳答案
简单的答案是否定的。
浮点类型可以包含整数,最大可达某个任意值,具体取决于 float 的存储方式。如果数字太大,则会转换为十进制。
如果您需要使用大整数值,请使用 BigInteger
类。
检查这些缺陷的好工具是 float converter 。 在浮点转换器中尝试123456789,它不会被准确存储。
关于java - double 移动小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19316055/