草庐IT

instance_double

全部标签

c++ - 如果我将 double 转换为 int,但 double 的值超出范围会怎样?

如果我将double转换为int,但double的值超出范围会怎样?假设我做了这样的事情?doubled=double(INT_MIN)-10000.0;inta=(int)d;a的值是多少?是否未定义? 最佳答案 没错。引用标准4.9,“如果截断值不能在目标类型中表示,则行为未定义。” 关于c++-如果我将double转换为int,但double的值超出范围会怎样?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 从已知大小的 double 组构造 std::vector<double>

我有一个指向double组第一个元素的指针:double*p。我也知道数组的长度:n。有没有办法将其复制到std::vector中?最好使用构造函数和分配器。我想做类似的事情std::vectorv=std::vector(p,n);但无法确定哪个构造函数最接近此。我正在使用C++11。 最佳答案 std::vector有一个采用范围的构造函数。你可以像这样使用它:std::vectorv(p,p+n); 关于c++-从已知大小的double组构造std::vector,我们在Stack

c++ - #define to double - 不同的值?

这里有两种不同的方式来定义相同的值。我希望它作为64位(double)float(又名double)存在。#defineTHISVALUE-0.148759fdoublemyDouble=-0.148759;如果我执行以下操作doubletryingIt=THISVALUE;我在调试或打印期间查看该值,我可以看到它将tryingIt分配给-0.14875899255275726我知道float不是精确的,但这只是一个疯狂的差异,真的让我的数学很乱。在顶部代码块中直接分配doubleas会在调试器中为我提供-0.14875900000000000的值-正是它应该的值。有什么想法吗?

C++11 operator""with double parameter

考虑:structstr{};stroperator""_X(longdoubled){returnstr();}这在g++4.7.2Wallstd=c++11下编译得很好但现在如果我给双倍:stroperator""_X(doubled){returnstr();}我收到以下错误消息:main.cpp|3|错误:'stroperator""_X(double)'的参数列表无效问题是什么?这与“无法重新定义内置文字后缀的含义”(StroustrupFAQ)有关吗?您能想出解决方法吗? 最佳答案 Whatistheproblem?问题

c++ - MSVC 用 double 支撑初始化似乎违反了标准?

看看这个简单的程序:intmain(){floatf2=7.2;//OK,withwarningfloatf3=7.199999809265137;//OK,nowarningfloatf4{7.2};//Failsfloatf5{7.199999809265137};//OK,nowarningfloatf6={7.2};//Failsfloatf7={7.199999809265137};//OK,nowarning}当使用默认选项(cl/W4,版本19.00.23918)使用MSVC2015编译时,我收到以下消息:FloatTest.cpp(2):warningC4305:'in

c++ - double 到固定宽度的字符串转换

我想打印一个double值,到一个不超过8个字符的字符串中。打印的数字应尽可能多,例如5.259675489205688.514e-6-9.4e-12我尝试了C++iostreams和printf风格,但都没有按照我希望的方式尊重提供的大小:cout给出:5.62525e-0055.62525e-005我知道我可以指定一个精度,但我必须在这里提供一个非常小的精度,以涵盖最坏的情况。有什么想法可以在不牺牲太多精度的情况下强制执行精确的字段宽度吗?我需要这个来打印矩阵。我真的必须想出自己的转换函数吗?5年前有人问过类似的问题:ConvertdoubletoStringwithfixedwi

c++ - 将 std::complex<double> 类型转换为 __complex128

我正在尝试使用GCC中的quadmath库。我有一个复数double值,我想将其类型转换为相应的四精度复数__complex128。以下是一个最小的(非)工作示例:#include#include#includeusingnamespacestd::complex_literals;intmain(){std::complexx=1+2i;std::printf("x=%5.5g+%5.5g\n",x.real(),x.imag());__complex128y=2+2i;y=x;return0;}当我尝试编译这段代码时g++test.cpp-lquadmath-otest我收到以下错

c++ - 为什么 boost::call_traits<double>::param_type 是 "const double&"而不是 "double"

我在win32program@windows7机器上使用代码“boost::call_traits::param_type”。令我惊讶的是,它不是“double”而是“constdouble&”。我认为所有原始类型都适合对函数参数使用“按值传递”,这不是常识吗?因为很多人会使用is_pod来判断是否使用引用,不是吗? 最佳答案 根据doc,该优化显然只适用于“小型”内置类型。.快速浏览source,看起来“小”类型被认为是满足sizeof(T)的类型.在32位机器上,这显然不包括double.在某些情况下,将参数传递为double可

c++ - std::vector<double> 销毁抛出 sigabrt

我有一个std::vectorGDB在其中显示它包含这些值:Wphvector[0]10.750281685547618double[1]0.0053087812248281997double[2]4.2807534148705719e-08double[3]5.7427427663508097e-07double[4]0double在函数退出时自动销毁时,它会抛出一个SIGABRT。0raiseraise.c640x7fffeec5ad051abortabort.c920x7fffeec5eab62__libc_messagelibc_fatal.c1890x7fffeec93d7b

c++ - 用 boost::spirit 解析成一个 vector<vector<double>>

我的目的是将逗号分隔的值列表解析为嵌套vector。这个列表是二维的。基本问题是:是否可以用boost::spirit解析成vector的vector?类似于“牵引力”下的表格:''RPM0,5000,10000,15000,20000,25000''Temp'-40.,0.,20.,40.''Traction200.,175.,170.,165.,160.,150.200.,175.,170.,165.,160.,150.165.,165.,160.,155.,145.,145.160.,155.,150.,145.,145.,140.'下一步,我想读入4维数据,但目前我正在努力处理