我有一个 Double 变量,它是 0.0449999
,我想将它四舍五入到小数点后 1 位 0.1
。
我正在使用 Kotlin,但 Java 解决方案也很有帮助。
验证码:Double = 0.0449999
我尝试使用这两种解决方案获得小数点后 1 位:
val 解 = Math.round(number * 10.0)/10.0
val solution = String.format("%.1f", number)
问题是我在这两种情况下都得到 0.0,因为它将数字从 0.04
舍入到 0.0
。它不会取所有小数并四舍五入。
我要获取0.1:0.045 -> 0.05 -> 0.1
最佳答案
最后我按照 Andy Turner
的建议做了,四舍五入到小数点后 3 位,然后到 2,然后到 1:
答案 1:
val number:Double = 0.0449999
val number3digits:Double = String.format("%.3f", number).toDouble()
val number2digits:Double = String.format("%.2f", number3digits).toDouble()
val solution:Double = String.format("%.1f", number2digits).toDouble()
答案 2:
val number:Double = 0.0449999
val number3digits:Double = Math.round(number * 1000.0) / 1000.0
val number2digits:Double = Math.round(number3digits * 100.0) / 100.0
val solution:Double = Math.round(number2digits * 10.0) / 10.0
结果:
0.045 → 0.05 → 0.1
注意:我知道这不是它应该如何工作的,但有时您需要在某些特殊情况下考虑所有小数,所以也许有人会觉得这很有用。
关于java - 将 Double 舍入到小数点后 1 位 kotlin : from 0. 044999 到 0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011924/