NoC*_*lue 7 decimal truncation swift
在Swift中,有没有办法将浮点数截断为2位小数,这样你就可以用它进行进一步的计算?我见过的所有线程都处理了一个字符串,我无法弄清楚如何使用数学方法.
我尝试使用扩展(在这个论坛上找到),想象我可以在截断后转回浮动,但我最终在我开始的地方,另一个非截断的浮点数.我需要我的返回值是四分之一步(即6.50,6.75,5.25等),而我最终得到的结果就像6.990022 ....
必须有一个简单的方法来做到这一点,但我正在撞墙.提前致谢...
这是问题所在:
func roundToNearestQuarter(#power : Float) -> String {
var errorToLowerQuarterRaw : Float = power % 0.25 // 0.210000038146973
var errorToLowerQuarterString = errorToLowerQuarterStepRaw.string(2) // "0.21"
var errorToLowerQuarter = NSString(string: errorToLowerQuaterStepString).floatValue // 0.209999993443489
// more code
}
roundToNearestQuater(6.71)
Run Code Online (Sandbox Code Playgroud)
Mar*_*n R 11
您不能精确地舍入a Float或Double2个十进制数字.原因是这些数据类型使用二进制浮点表示,并且不能精确地表示0.1或0.01之类的数字.例如,参见
但你说:
我需要我的返回值是四分之一步(即6.50,6.75,5.25等),
这是完全可能的,因为0.25 = 2 -2可以完全表示为浮点数.
该round()函数将浮点数舍入为最接近的整数值.要舍入到最接近的四分之一,您只需要使用因子4"缩放"计算:
func roundToNearestQuarter(num : Float) -> Float {
return round(num * 4.0)/4.0
}
roundToNearestQuarter(6.71) // 6.75
roundToNearestQuarter(6.6) // 6.5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6324 次 |
| 最近记录: |