我试图将一个double分成整数和小数部分
例如,数字24.4应分为24和4.
int integer = (int)number;
double decimal = number-(int)number;
System.out.println(decimal);
Run Code Online (Sandbox Code Playgroud)
使用此方法为我提供以下值:
integer = 24
decimal = 0.3999999999999986
Run Code Online (Sandbox Code Playgroud)
我需要十进制的值为4.
如何解决这个问题?
这是因为doubles不完全是"实数" - 记住在任何范围内都有无数个实数,而只有有限数量的数字double- 因此有限数量的值,所以必须发生一些舍入.
事实是,24.4不能用double- 确切地表示- 所以你的数字的分数实际上是0.3999左右......
如果你想要一个精确的解决方案 - 你应该使用一个库来为你提供精确的小数值,例如BigDecimal.
如果你想更多地了解这个double不准确的问题 - 你应该阅读更多关于浮点算术的内容,而这篇文章虽然很高,但也是必须的,才能真正理解正在发生的事情.
如果你还不能理解这些文章 - 只需要考虑:如果你需要一个确切的值 - doubles不能提供它 - 如果是这种情况你应该使用一个库.
根据十进制数字的数量,您可以使用此方法:
double number = 24.4;
int integer = (int)number;
double decimal = (10 * number - 10 * integer)/10;
System.out.println(decimal);
Run Code Online (Sandbox Code Playgroud)
说明:删除小数点,进行减法,最后将小数点返回原始位置!
| 归档时间: |
|
| 查看次数: |
56269 次 |
| 最近记录: |