相关疑难解决方法(0)

353
推荐指数
18
解决办法
30万
查看次数

在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万
查看次数

如何确定'auto'变量的实际类型

在这个回应中:

/sf/answers/1006762291/

这个程序是给出的:

std::vector<int> vi{ 0, 2, 4 };
std::vector<std::string> vs{ "1", "3", "5", "7" };
for (auto i : redi::zip(vi, vs))
    std::cout << i.get<0>() << ' ' << i.get<1>() << ' ';
Run Code Online (Sandbox Code Playgroud)

我不知道它的类型auto i是什么,使得重用专业知识和从示例中学习变得更加困难.以下是改变auto ichar i收益

In function ‘int main()’:|
/data/cbworkspace/TestZip/TestZip.cpp|14|error: cannot convert ‘boost::iterator_facade<boost::zip_iterator<boost::tuples::tuple<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, __gnu_cxx::__normal_iterator<int*, std::vector<int> > > >, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, boost::random_access_traversal_tag, boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >, long int>::reference {aka boost::tuples::cons<int&, boost::tuples::cons<int&, boost::tuples::null_type> >}’ to ‘char’ in initialization|
/data/cbworkspace/TestZip/TestZip.cpp|14|warning: unused …
Run Code Online (Sandbox Code Playgroud)

c++ auto c++11

12
推荐指数
4
解决办法
8136
查看次数

2.0和2.0f之间的差异(显式浮动与双重文字)

我有一些关于放在f文字值旁边的问题.我知道它将它定义为float但是我真的需要它吗?这是否2.0f * 2.0f更快或编译任何不同2.0 * 2.0float a = 2.0;编译的方式是否与编译方式不同float a = 2.0f;

c c++

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×4

c++11 ×2

auto ×1

c ×1

gcc ×1

literals ×1

precision ×1

typeof ×1

variables ×1