java - double 移动小数点

标签 java

我有这个代码:

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/

相关文章:

java - Spring Batch 作业调度程序

java - 如何在 java 中分离最后和剩余的所有单词?

Java:如何检查是否可以获取锁?

java - 错误: Attempt to invoke virtual method on null object reference 'android.database.Cursor com.myapplication.DatabaseHeleper.getData()'

java - 扫描仪不会停止询问输入

java - Maven 无法解析 SNAPSHOT 依赖项

java - 从工作流步骤查找工作流实例

java - 如何在给定特征向量和解释方差分数的情况下(本地)执行 PCA 特征选择

Java - 测试时隐藏系统输出

java - 如何通过ViewpagerAdapter访问 View ?