草庐IT

BINARY_DOUBLE

全部标签

c++ - 使用 ios::binary 从标准中读取

我正在尝试从标准输入中读取并通过其十进制值将每个字符彼此区分开来。据我了解,换行符(10)和回车符(13)将被解释为相同的字符。我想区分两者。我知道如果我正在读取一个文件,我可以使用ios::binary参数打开它。但是,如果我从标准输入读取数据呢? 最佳答案 您可以使用get从std::cin中读取。该方法专门用于读取无格式数据(seedoc) 关于c++-使用ios::binary从标准中读取,我们在StackOverflow上找到一个类似的问题: htt

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维数据,但目前我正在努力处理

c++ - VS c++ 和 MinGW 实现 double 类型有什么区别

同样的代码在VSc++和MinGW中运行得到不同的结果。结果是double类型。示例:在VSC++中得到“-6.397745731873350”,但在MinGW中得到“-6.397745731873378”。有垃圾不同。但我不知道为什么? 最佳答案 我敢猜测这是两种可能性之一。当WindowsNT是新的,并且它们支持移植到其他处理器(例如MIPS和DECAlpha)时,MS有一点问题:处理器都有64位浮点类型,但它们有时会生成结果略有不同。DECAlpha对64位double作为64位double进行了计算。x86上的默认模式有点不

c++ - 将 float 转换为 double 并返回 float 在 C++ 中给出相同的值吗

假设在下面的代码中floatf1=...;doubled1=static_cast(f1);floatf2=static_cast(d1);ASSERT(f1==f2);变量f1被初始化为非NaN的值。那么断言是否保证符合C++标准? 最佳答案 这里有一些线索,但不是答案:4.6Aprvalueoftypefloatcanbeconvertedtoaprvalueoftypedouble.Thevalueisunchanged.Thisconversioniscalledfloatingpointpromotion....4.8Ap

c++ - float、double 和 long double 是否有保证的最小精度?

从我之前的问题“Isfloatingpointprecisionmutableorinvariant?”我收到了一个response其中说,CprovidesDBL_DIG,DBL_DECIMAL_DIG,andtheirfloatandlongdoublecounterparts.DBL_DIGindicatestheminimumrelativedecimalprecision.DBL_DECIMAL_DIGcanbethoughtofasthemaximumrelativedecimalprecision.我查看了这些宏。它们位于标题中。.来自cplusplusreference

c++ - 比较一个 32 位 float 和一个 32 位整数而不转换为 double 值,当任一值可能太大而无法完全适合另一种类型时

我有一个32位floatf我需要转换为32位无符号整数的数字(已知为正数)。它的大小可能太大而不适合。此外,下游计算需要一些净空。我可以计算最大可接受值m作为32位整数。如果f,我如何在受约束的32位机器(ARMM4F)上有效地确定C++11数学上。请注意,这两个值的类型不匹配。以下三种方法各有其问题:static_cast(f):我认为这会触发未定义的行为,如果f不适合32位整数f(m):如果m太大而无法准确转换,转换后的值可能大于m使得后续比较在某些边缘情况下会产生错误的结果static_cast(f)(m):在数学上是正确的,但需要强制转换为double并使用double,出于效

c++ - 预处理器 "invalid integer constant expression"比较 int 和 double

在我的代码中的某处,我有预处理器定义#defineZOOM_FACTOR1我在另一个地方#ifdefZOOM_FACTOR#if(ZOOM_FACTOR==1)#defineFONT_SIZE8#else#defineFONT_SIZE12#endif#else#defineFONT_SIZE8#endif问题是当我将ZOOM_FACTOR值更改为float值时,例如1.5,出现编译错误C1017:无效的整数常量表达式。有谁知道我为什么会收到这个错误,有没有办法在预处理器指令中比较integer和floatingpointnumber? 最佳答案