加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 将float浮动到2位小数的最简单方法?

发布时间:2020-12-14 05:26:08 所属栏目:百科 来源:网络整理
导读:在 Swift中,有没有办法将浮点数截断为2位小数,这样你就可以用它进行进一步的计算?我见过的所有线程都处理了一个字符串,我无法弄清楚如何在数学上使用它. 我尝试使用扩展(在这个论坛上找到),想象我可以在截断后转回浮动,但我最终在我开始的地方,另一个非截断
在 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)
你不能精确地将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.75
roundToNearestQuarter(6.6)  // 6.5

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读