gpt4 book ai didi

c++ - 为什么双重优先于 float ?

转载 作者:IT老高 更新时间:2023-10-28 22:06:34 29 4
gpt4 key购买 nike

在我看到的大多数代码中,double 最适合 float,即使在不需要高精度时也是如此。

由于有performance penalties当使用双重类型(CPU/GPU/内存/总线/缓存/...)时,这种双重过度使用的原因是什么?

示例:在计算流体动力学中,我使用的所有软件都使用 double 。在这种情况下,高精度是没有用的(由于数学模型中的近似值造成的误差),并且有大量数据需要移动,可以使用 float 将其减半。

今天的计算机功能强大这一事实毫无意义,因为它们被用来解决越来越复杂的问题。

最佳答案

其中:

  • 节省下来的钱几乎不值得(数字运算并不常见)。
  • 舍入误差会累积,因此最好从一开始就采用比所需更高的精度(专家可能知道无论如何它已经足够精确,并且有些计算可以精确完成)。
  • 无论如何,在内部使用 fpu 的常见浮点运算通常都适用于 double 或更高精度。
  • C 和 C++ 可以从 float 隐式转换为 double ,反之则需要显式转换。
  • 可变参数和无原型(prototype)函数总是得到 double ,而不是浮点。 (第二个仅在古 C 中,并被积极劝阻)
  • 您通常可能会以超过所需的精度执行操作,但很少会使用更少的精度,因此库通常也支持更高的精度。

但归根结底,YMMV:为您自己和您的具体情况衡量、测试和决定。

顺便说一句:性能狂热者还有更多:使用 IEEE 半精度类型。几乎没有硬件或编译器支持它,但它再次将您的带宽需求减少了一半。

关于c++ - 为什么双重优先于 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818382/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com