【问题标题】:How to do fixed-point math instead of floating-point?如何做定点数学而不是浮点数?
【发布时间】:2011-04-01 09:15:06
【问题描述】:

我不是数学大叔,但一个真实的告诉我:

"使用定点而不是浮点 点做乘法,除法, 求和,三角函数和 整合”

那么,除了使用 double 或 float 数据类型,我应该怎么做?有没有人有一个方便的 sn-p 或链接来显示非数学叔叔的区别?

【问题讨论】:

  • 大多数定点库不做三角或微积分。
  • 你定点计算的原因是什么?您希望让您的应用程序更快吗?
  • 我认为你的问题是有效的,但措辞不是很好......

标签: iphone objective-c math floating-point fixed-point


【解决方案1】:

查看下面的固定点链接,我相信对你有用...

http://cnx.org/content/m11054/latest/

http://www.digitalsignallabs.com/fp.pdf

【讨论】:

【解决方案2】:

该语言本身不支持除整数和浮点值之外的任何内容。但是,您可以通过整数轻松模拟定点值。例如,如果您决定要使用三位小数的定点值,则可以使用例如 12345 来表示 12.345。加法是直截了当的,你肯定可以弄清楚如何表达其他基本运算。

但是,不支持做三角函数等。

【讨论】:

    【解决方案3】:

    不管“数学大叔”是谁,他都错了。

    除非您真正了解自己在做什么,否则您想出的任何定点实现不会比使用本机双精度和系统数学库更准确。如果你真的明白自己在做什么,你就不会问这个问题了。

    所以不用担心。使用double。如果遇到精度问题,请先了解它们,了解后再考虑如何避免。

    【讨论】:

    • 鉴于您不知道他的问题空间的域和所涉及的数字的大小,您似乎无法确定他是否需要定点对象与否。
    • 同意阿珀金斯。如果我们为小数部分分配更多位,则使用 64 位整数可以获得比双精度更高的精度。
    • @user172818:当然有可能。但是,“浮点”不一定意味着“双”。大多数商品硬件都支持 80 位浮点(具有正确舍入的 64 位精度,整数硬件没有)。有很好的任意精度浮点库,可以根据需要提供准确的结果。我并不是说没有定点的地方——我是说天真地使用定点有可能引入微妙的错误,所以你不应该仅仅因为“数学叔叔”说过就使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多