【问题标题】:Data Types Obj-C [duplicate]数据类型 Obj-C [重复]
【发布时间】:2012-02-09 05:57:28
【问题描述】:

完全重复:
Issue with float and double data types in objective C

[讽刺的是,要找到重复的问题你需要知道答案。]

【问题讨论】:

  • 引用 Wikipedia article 关于该主题的内容,“无论精度如何,某些数字(例如 1/3 和 0.1)都无法以二进制浮点数精确表示。”
  • 这是一个常见问题,与浮点表示的一般计算机科学主题有关,而不是目标 c。我将标记许多重复的问题之一。
  • 至于为什么NSLoggdb 的打印不同,32 位浮点数对于大约 7 位精度来说是好的。因此,NSLog 似乎在第七位之后截断以提供更有意义的输出,而gdb 显示存储在变量中的确切值而不考虑精度。有趣的是,我认为人们可能会争辩说这两种行为在其特定背景下都是正确的。
  • 这对 Javascript 和 Java 有影响吗,还是问题“虚拟化了”?
  • @Yar C、C++、C#、Java、JavaScript 等同样的问题

标签: objective-c math gdb


【解决方案1】:

【讨论】:

    【解决方案2】:

    0.1 是二进制的“重复十进制”(0.0001100110011...),因此 0.1 的表示是不精确的。 NSLog 可能会舍入或截断输出。

    【讨论】:

    • binary 中重复 decimal? (我知道你的意思,这只是一种奇怪的说法。()
    • 将其称为“二进制中的重复二进制”听起来更糟。有没有一种标准的方法来引用在其他碱基中具有重复小数部分的数字?
    • “带有重复小数部分的数字”?但我承认“重复十进制”可以清楚地传达这个想法。
    • 我认为“重复十进制”是正确的术语,无论基数如何。在这种情况下,“小数”是指“小数点后的内容”,而不是数字基数。也许“二进制重复十进制”是最简洁的描述符?
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 2017-06-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多