Kotlin 如何在不损失精度的情况下倍增?
鉴于此功能:Kotlin 如何在不损失精度的情况下倍增?,kotlin,double,precision,Kotlin,Double,Precision,鉴于此功能: fun multiplyByHundred(num:Double):Double{ return num * 100 } 以下是一些输入的结果: 69.56=>6956.0 69.57=>6956.99999999 69.58=>6958.0 69.59=>6959.0 为什么69.57导致6956.99999999 如何在不损失精度的情况下正确地进行此计算,并使其与任何双精度计算一起工作 你不能。双精度只能表示实数的稀疏子集。如果可以适当地格式化输出(这基本上就是Mi
fun multiplyByHundred(num:Double):Double{
return num * 100
}
以下是一些输入的结果:
69.56=>6956.0
69.57=>6956.99999999
69.58=>6958.0
69.59=>6959.0
你不能。双精度只能表示实数的稀疏子集。如果可以适当地格式化输出(这基本上就是Microsoft Excel所做的,还有一些非常巧妙的表达式技巧,如1/3+1/3+1/3),则可以使用
double
如果你需要完美的精度,那么使用一种能够做到这一点的类型。十进制类型BigDecimal
可能就是您想要的
如果你使用的是货币,不需要担心1000(例如突尼斯第纳尔)或比特币(小数点后8位),那么使用美分和整数就是一种方法。你不能。双精度只能表示实数的稀疏子集。如果可以适当地格式化输出(这基本上就是Microsoft Excel所做的,还有一些非常巧妙的表达式技巧,如1/3+1/3+1/3),则可以使用
double
如果你需要完美的精度,那么使用一种能够做到这一点的类型。十进制类型BigDecimal
可能就是您想要的
如果您使用的是货币,不需要担心1000(如突尼斯第纳尔)或比特币(小数点后8位)的货币,然后使用美分和整数是一种方法。考虑一下:这实际上是我试图将一种货币转换为cents@kev我反复听到的一件事是,在处理货币时,通常不应该使用浮点数cents@kev我反复听到的一件事是,在处理金钱问题时,通常不应该使用浮点数。