java - 将 Double 舍入到小数点后 1 位 kotlin : from 0. 044999 到 0.1

标签 java android kotlin rounding

我有一个 Double 变量,它是 0.0449999,我想将它四舍五入到小数点后 1 位 0.1

我正在使用 Kotlin,但 Java 解决方案也很有帮助。

验证码:Double = 0.0449999

我尝试使用这两种解决方案获得小数点后 1 位:

  1. val 解 = Math.round(number * 10.0)/10.0
  2. 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/

相关文章:

java - 如何清除android文本编辑字段

android - Jetpack Compose 在方向更改时保存状态

java - 获取坐标时如何忽略fitviewport(LibGdx)上的黑条?

java - Spark 无法从 webjar 加载静态文件

Java Applet 仅适用于 Firefox

android - Sqlite 不更新行

java - 为什么我在使用 Spring Boot 应用程序的 postman 中没有收到错误消息

java - 如何使用 json 对象从上下文位于 mainactivity 的对话框的 editText 发送数据?

algorithm - 黑客排名 : Inserting a Node Into a Sorted Doubly Linked List - Kotlin

android - 使用 Dagger 2 + Kotlin + ViewModel 注入(inject) ViewModel