我正在尝试快速分隔双精度数的十进制和整数部分。我尝试了多种方法,但是它们都遇到了相同的问题…
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.567800000000034,而无需将数字转换为字符串?
无需将其转换为字符串,您可以将舍入到小数点后的位数,如下所示:
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
您的输出将是
0.5678