【问题标题】:iphone float vs integer rounding?iphone浮点数与整数舍入?
【发布时间】:2010-06-18 01:35:35
【问题描述】:

好的,据我了解,作为分数的整数将以一种或另一种方式四舍五入,这样如果公式得出 5/6,它会自动将其四舍五入为 1。我有一个计算:

xyz = ((1300 - [abc intValue])/6) + 100;

xyz 定义为 NSInteger,abc 是通过 UIPicker 选择的 NSString。我希望计算 (1300 - [abc intValue]) 为低于 1300 的每 6 个单位加 1 到 100。例如,1255 应导致 xyz 的值为 100,而 1254 应导致值为 101。

现在,我知道由于舍入原则,我上面的公式是错误的,但我从程序本身得到了一些疯狂的结果。当我打出 1259 时,我得到了 106。当我打进 1255 时,我得到了 107。为什么会这样?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    你的理解是错误的。整数除法截断:

    5 / 6 == 0
    
    (1300 - 1259) / 6 == 41 / 6 == 6
    
    (1300 - 1255) / 6 == 45 / 6 = 7
    

    你可以使用:

    xyz = ((1300.0 - [abc intValue])/6) + 100;
    

    并将 xyz 设为NSDouble。这将确保它进行浮点除法。

    【讨论】:

    • 也许您的意思是 NSNumber 而不是 NSDouble(如果我没记错的话,这不是一个有效的类型)
    【解决方案2】:

    您可能还会混淆数字和时间。 1255 比 1300 低 45,而不是低于 5 :-)

    【讨论】:

    • 哈哈——也许我应该试试二年级的数学书:)谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多