【问题标题】:Objective C Maths not returning correct value [duplicate]Objective C Maths没有返回正确的值[重复]
【发布时间】:2014-05-11 13:37:16
【问题描述】:

我正在尝试在目标 c 中进行百分比总和

10 / 100 * 75 = 7.5

float x = ((10 / 100) * 75);

这将返回 0.000000。

如果我使用更大的数字而不是 10,例如 1024

1024 / 100 * 75 = 768

float x = ((1024 / 100) * 75);

它返回 750.000000。

我迷路了,不确定数学是否错误,变量类型需要从浮点数更改,或者是否有一个我可以使用的目标 c 内置百分比函数。

【问题讨论】:

    标签: ios objective-c c math floating-point


    【解决方案1】:

    您正在执行整数数学运算,这将永远不会产生浮点结果。 如果您想要浮点数学,请使用浮点数。

    涉及至少一个浮点数的数学运算将产生一个浮点数。

    所以,要么选择一个数字...

    float x = ((10 / (float)100) * 75);
    

    或在数字上添加“小数部分”,使其成为浮点数...

    float x = ((10 / 100.0) * 75);
    

    注意:撇开 100.0 实际上是双倍的差异不谈……这可能是另一个常见的“google-able”问题……

    【讨论】:

      【解决方案2】:

      有必要学习“C”语言。

      不正确:

      float x = ((10 / 100) * 75);
      

      说:取整数10,除以整数100:结果为0。再乘以整数75:结果为0。再转为float,结果为0。

      正确:

      float x = (10.0 / 100.0) * 75.0;
      

      说:取浮点值10,除以浮点值100:结果是浮点值0.1。然后乘以浮点值 75:结果是 7.5。

      “.0”使数字成为浮点数。

      【讨论】:

      • 正如@Jody 所说,没有必要将每个数字指定为浮点数,但这有助于避免错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      相关资源
      最近更新 更多