【问题标题】:Why is there no definition of the constant pi in the C++11 standard? [closed]为什么 C++11 标准中没有常量 pi 的定义? [关闭]
【发布时间】:2013-08-24 02:00:49
【问题描述】:

我觉得很烦人,我必须使用宏 _USE_MATH_DEFINES 才能将 pi 的值输入我的程序。或者我需要自己在自己的标题之一中定义它。或者我必须使用 boost 和所有这些。

这让我很恼火,没有标准的 c++ 标头以可移植的方式定义该常量。像 pi 这样的数学常量不在 C++ 标准中,有什么特别的原因吗?它会出现在标准的下一个版本中吗?

【问题讨论】:

  • 这很烦人,但需要。只需将_USE_MATH_DEFINES 添加到编译器选项中,这样您就可以避免从标题中添加它。这是我可以建议的最佳解决方案
  • 总有boost
  • 除了宏是_XOPEN_SOURCE(必须定义为700),常量是M_PI。 (这本身就是支持标准化的最有力论据。)
  • C++ 委员会之所以没有添加它是因为<math.h> 属于C 委员会。为什么C委员会没有添加它?你得到了我。
  • C 标准的下一个版本定于 2022 年发布,因此任何更改都将是漫长的等待C - Preliminary C2x Charter

标签: c++ c++11 pi c++-standard-library


【解决方案1】:

我认为它没有标准化,因为它并不是一个真正的主要问题。我真的没有看到仅仅写下#define 或 const static,或者只是用一堆你可能需要的数学常量制作一个标题有任何麻烦。编写标准的人在尝试改进语言时并没有真正想到任何事情。

【讨论】:

  • 自己硬编码当然不好,因为它可能会改变......
  • @BoBTFish 我敢打赌,数学常数π 的值不会很快改变;-)
  • @BoBTFish:当然,像 pi 这样的常量一直在变化。我认为更好的论点是不是每个人都可能需要相同精度的常量。
  • @ilent2:如果它不是编译时常量,我会相当失望。
  • 您不能(可移植地)自己定义它,因为您不知道可能需要多少位数。
猜你喜欢
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2012-11-05
  • 2015-04-13
  • 1970-01-01
相关资源
最近更新 更多