我正在尝试将随机双精度数转换为长整数而不舍入或截断它。首先,我将双精度数更改为字符串,以了解有多少小数位,然后将值更改为长整数。我的问题是最后一个小数位的数字并不总是正确的,我不知道原因以及如何更改它。这是代码:
double z=(double) myRandom(1, 20);
long test;
String s = Double.toString(z);
test=(long) (Math.pow(10, s.length()-s.indexOf(".")-1)*z);
System.out.println("z: "+z);
System.out.println("double converted to long: "+test);
这就是输出:
电话:19.625014811604743
双转换为长:19625014811604744
d: 9.143326452202839
双转换为长:9143326452202838
d: 5.8964228376511105
双转换为长:58964228376511104
电话:15.045936360299917
双转换为长:15045936360299918
d: 14.147950026532694
双转换为长:14147950026532694