【问题标题】:Take value from float number after dot从点后的浮点数中取值
【发布时间】:2015-12-01 15:03:57
【问题描述】:

如何在浮点值中正确提取昏迷后的第二个值。

例子:

var value = 5.435

我想在昏迷之后取第二个值,即 3。

如何正确地做到这一点?

【问题讨论】:

    标签: swift swift2 swift-playground


    【解决方案1】:

    如果您想同时处理正值和负值:

    (Int)( abs(value) * 100 ) % 10
    

    如果你想保留标志,只需删除abs

    【讨论】:

    • Int 周围不需要括号。
    • 你说得对,Int 周围的括号是不必要的。
    【解决方案2】:

    也许是这个:(int)( value * 100 ) % 10

    【讨论】:

      【解决方案3】:

      如果它总是小数点后三位,我会这样做。

      var value = 5.435
      value *= 100
      
      var digit = value % 10
      

      【讨论】:

        【解决方案4】:

        修改是一项昂贵的操作,而是这样做

        (Int(value * 100)) - (Int(value * 10) * 10)
        

        在你的场景中我们得到

        (Int(5.435 * 100)) - (Int(5.435 * 10) * 10);
        (Int(543.5)) - (Int(54.35) * 10);
        (543) - (54 * 10);
        (543) - (540);
        3
        

        【讨论】:

        • “Mod 是一项昂贵的操作” – 比多次乘法加上舍入到 Int 更昂贵?你对这个事实有什么参考吗?
        • 这是嵌入式系统的参考:embeddedgurus.com/stack-overflow/2011/02/… 它涉及减法和除法,除非编译器足够聪明,可以将除法转换为乘法,否则除法也很慢。我刚刚做了一个游乐场测试,循环10000次,mod大约需要2.8941秒,我的方法平均需要2.6752。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        相关资源
        最近更新 更多