【问题标题】:Converting String to Float or double value changes the decimal values [duplicate]将字符串转换为浮点数或双精度值会更改十进制值 [重复]
【发布时间】:2016-08-15 13:14:43
【问题描述】:

我正在尝试将字符串转换为浮点数,但它会更改十进制值。 例如我有一个字符串:

NSString *str = @"33.641832";
float value = [str floatValue]; //33.6418304

值给我33.6418304 而不是33.641832。我想完全按照字符串进行转换。

【问题讨论】:

    标签: objective-c string floating-point type-conversion


    【解决方案1】:

    这是由于缺乏浮点精度。

    根据我的经验,浮点数大约精确到 7 位有效数字。

    33.641832 存储为 33641832 *10^-6 所以你有 8 个有效数字 (33641832)。

    如果你想要更精确,你应该使用double

    【讨论】:

    【解决方案2】:

    请参阅 Rick Regan 在this post 中的表格:

    float 类型只能保证准确地“往返”具有 6 个有效数字的数字。对于doubles,保证为 15。

    【讨论】:

      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多