双重与浮动

Max*_*xpm 1 c++ floating-point precision double

我的代码中有一个常量pi:

const float PI = acos(-1);

将它声明为双倍会更好吗?对该网站上另一个问题的回答称浮点运算并不完全准确,我希望常数是准确的.

Mic*_*rdt 8

"精确"不是布尔概念.float提供一定的精度.该金额是否足以满足您的申请取决于您的申请.

大多数应用程序不需要比float提供的更精确,尽管许多应用程序更倾向于使用double(尝试和)掩盖不稳定算法的问题或"仅仅因为"由于"浮点运算不完全精确"等误解.

在大多数情况下,当a float"不够精确"时,问题不在于float,它是使用它的代码.

编辑:话虽如此,大多数现代CPU只进行double精度或更高的计算,所以你不妨使用,double除非你使用大型数组并且内存使用是一个问题.

  • @Matthieu:对于货币金额(至少实际上最终作为账户中的头寸),您应该使用适当的小数类型.其他一切都是业余的废话. (4认同)
  • 实际上,大多数人更喜欢双倍,因为它是"默认"精度(0.0是双字面,要浮动你要做0.0f). (2认同)