我尝试使用扩展(在这个论坛上找到),想象我可以在截断后转回浮动,但我最终在我开始的地方,另一个非截断的浮点数.我需要我的返回值是四分之一步(即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)你不能精确地将float或Double舍入到2位小数.
原因是这些数据类型使用二进制浮点表示,
并且不能完全代表0.1或0.01之类的数字.
例如,参见
> Why Are Floating Point Numbers Inaccurate?
> What Every Computer Scientist Should Know About Floating-Point Arithmetic
但你说:
I need my return value to be in quarter steps (i.e. 6.50,5.25,etc),
这是完全可能的,因为0.25 = 2-2可以完全表示为浮点数.
round()函数将浮点数舍入为最接近的整数值.
要舍入到最接近的四分之一,您只需要使用因子4“缩放”计算:
func roundToNearestQuarter(num : float) -> float { return round(num * 4.0)/4.0}roundToNearestQuarter(6.71) // 6.75roundToNearestQuarter(6.6) // 6.5总结
以上是内存溢出为你收集整理的swift – 将float浮动到2位小数的最简单方法?全部内容,希望文章能够帮你解决swift – 将float浮动到2位小数的最简单方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)