Kotlin:SumbyDouble 返回额外的小数

羽衣甘蓝

我正在从 arraylist 中求和 double 值,它给出的附加小数为 99999,如何解决这个问题,请指导

前任

class ExDet{var expName:String ="",var expAmount:Double = 0.0}
    val arrayList = ArrayList<ExDet>()
        arrayList.add(ExDet("Abc 1",45.66))
        arrayList.add(ExDet("DEF 1",10.0))
        arrayList.add(ExDet("Lee 1",600.89))  
        arrayList.add(ExDet("Ifr 1",200.9))  

    var amt = arrayList.sumByDouble{ it.expAmount }

金额的预期值为:

Amt = 857.45

但它返回

Amt = 857.4499999

要测试的示例代码

data class ExDet(var expName:String ="" ,var expAmount:Double=0.0)

fun main(args: Array<String>) {

        val arrayList = ArrayList<ExDet>()
        arrayList.add(ExDet("Abc 1",45.66))
        arrayList.add(ExDet("DEF 1",10.0))
        arrayList.add(ExDet("Lee 1",600.89))  
        arrayList.add(ExDet("Ifr 1",200.9)) 
    var amt = arrayList.sumByDouble{ it.expAmount }

    println("Amount is : $amt")

}
安德烈·阿图斯

您面临问题是浮点数建立在基数 2 之上,而不是基数 10。

想想如何轻松地将三分之一表示为分数(1/3),但是当您转换为十进制时,您会在小数点(即 0.33...)之后得到一个重复(重复)数字。当以基数 2 表示时,一些十进制数会重复出现,例如x.9. 计算机的位数是有限的,因此 (base-2) 数被截断。所有截断错误都可以累加。

您需要四舍五入到所需的精度(例如round(x * 100) / 100).

如果您只对它的显示方式感兴趣,那么您可以使用format类似于“%.2f”函数。

String.format("%.2f", value)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Kotlin 中删除额外的 if

来自分类Dev

用户输入的货币额外小数

来自分类Dev

转换返回额外的数据

来自分类Dev

XMLHttpRequest返回额外的字符

来自分类Dev

以小数形式返回SQL

来自分类Dev

从其关系返回额外的字段

来自分类Dev

语法返回额外 NULL 的情况

来自分类Dev

比较表记录并返回额外的

来自分类Dev

Kotlin 是否提供任何额外的安全性?

来自分类Dev

find_by_sql不返回额外的属性

来自分类Dev

Java匹配器返回额外的“。” 在输出中

来自分类Dev

read()返回文件中的额外字符

来自分类Dev

Android String.split(“”)返回额外的元素

来自分类Dev

递归函数不会返回额外的零

来自分类Dev

SQL查询根据条件返回额外的列

来自分类Dev

Ruby on Rails查询返回额外的列

来自分类Dev

数组返回一个额外的值

来自分类Dev

游标返回1条额外记录

来自分类Dev

JOIN中的SQL CASE返回额外的行

来自分类Dev

String.replace返回额外的引号

来自分类Dev

Python MySQLQuery 结果返回额外的字符

来自分类Dev

UNION 查询不返回额外的列

来自分类Dev

_getch 返回额外的空终止符

来自分类Dev

左外连接返回额外记录

来自分类常见问题

groupBy在Kotlin中返回emptySet

来自分类Dev

Kotlin从嵌套的forEach返回@forEach

来自分类Dev

返回null getrequest retrofit kotlin

来自分类Dev

小数的楼层划分返回错误答案

来自分类Dev

如果不是整数,则仅返回小数。爪哇