小编use*_*052的帖子

在C++中是否有一个浮点文字后缀来使数字加倍精度?

我目前正在研究一个进行数值计算的C++项目.绝大多数代码使用单精度浮点值,并且完全可以正常工作.因此,我使用编译器标志来使基本浮点文字单精度而不是双精度,这是默认值.我发现这使得表达式更容易阅读,我不必担心在某个地方忘记'f'.但是,我时不时地需要双精度计算提供的额外精度,我的问题是如何将双精度文字输入到这样的表达式中.到目前为止,我尝试的每种方法都首先将值存储在单个精度变量中,并将截断值转换为双精度值.不是我想要的.

我到目前为止尝试过的一些方法如下.

#include <iostream>

int main()
{
  std::cout << sizeof(1.0E200) << std::endl;
  std::cout << 1.0E200 << std::endl;

  std::cout << sizeof(1.0E200L) << std::endl;
  std::cout << 1.0E200L << std::endl;

  std::cout << sizeof(double(1.0E200)) << std::endl;
  std::cout << double(1.0E200) << std::endl;

  std::cout << sizeof(static_cast<double>(1.0E200)) << std::endl;
  std::cout << static_cast<double>(1.0E200) << std::endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

具有单精度常量的运行会产生以下结果.

~/path$ g++ test.cpp -fsingle-precision-constant && ./a.out
test.cpp:6:3: warning: floating constant exceeds range of ‘float’ [-Woverflow]
test.cpp:7:3: warning: floating constant exceeds range of ‘float’ [-Woverflow]
test.cpp:12:3: warning: floating constant exceeds …
Run Code Online (Sandbox Code Playgroud)

c++ precision gcc literals

17
推荐指数
4
解决办法
1万
查看次数

标签 统计

c++ ×1

gcc ×1

literals ×1

precision ×1