问题
我试图在 swift 中分离 double 的小数和整数部分。我尝试了很多方法,但都有同样的问题。 . .
- let x:Double = 1234.5678
- let n1:Double = x % 1.0 // n1 = 0.567800000000034
- let n2:Double = x - 1234.0 // same result
- let n3:Double = modf(x, &integer) // same result
复制代码
有没有办法在不转换为字符串的情况下获得 0.5678 而不是 0.5678000000034?
回答
您可以将其四舍五入到多个小数位,而不是将其转换为字符串,如下所示:
- let x:Double = 1234.5678
- let numberOfPlaces:Double = 4.0
- let powerOfTen:Double = pow(10.0, numberOfPlaces)
- let targetedDecimalPlaces:Double = round((x % 1.0) * powerOfTen) / powerOfTen
复制代码
|