草庐IT

double-double-arithmetic

全部标签

c++ - 我们通常应该使用浮点字面量来代替更简单的 double 字面值吗?

在C++中(或者可能只有我们的编译器VC8和VC10)3.14是一个double字面值,而3.14f是一个float字面量。现在我有个同事说:Weshouldusefloat-literalsforfloatcalculationsanddouble-literalsfordoublecalculationsasthiscouldhaveanimpactontheprecisionofacalculationwhenconstantsareusedinacalcualtion.具体来说,我认为他的意思是:doubled1,d2;floatf1,f2;...initandstuff...

c++ - 为什么 numeric_limits::min 为 int 返回负值,但为 float/double 返回正值?

为什么numeric_limits::min会为int返回负值,而为例如返回正值float和双倍?#include#includeusingnamespacestd;intmain(){cout::min()::min()::min()输出:int:-2147483648float:1.17549e-38double:2.22507e-308来自cppreference:ReturnstheminimumfinitevaluerepresentablebythenumerictypeT.Forfloating-pointtypeswithdenormalization,minretur

c++ - 如何在 C++ 中将字符串转换为 double 值?

如何在C++中将字符串转换为double值?我想要一个在字符串不是数字时返回0的函数。 最佳答案 参见C++FAQLiteHowdoIconvertastd::stringtoanumber?请参阅C++super常见问题解答HowdoIconvertastd::stringtoanumber?请注意,根据您的要求,您无法区分所有允许的零字符串表示形式和非数字字符串。//therequestedfunction#includedoublestring_to_double(conststd::string&s){std::istrin

c++ - double - 小数位

根据我的阅读,数据类型double的值具有大约15位小数的精度。但是,当我使用十进制表示重复的数字(例如1.0/7.0)时,我发现该变量包含0.14285714285714285的值——即17位(通过调试器)。我想知道为什么它在内部表示为17位,为什么15的精度总是写在~15处? 最佳答案 IEEEdouble有53个有效位(即DBL_MANT_DIG中的的值)。这大约是15.95个十进制数字(log10(253));实现集DBL_DIG到15,而不是16,因为它必须向下舍入。因此,您的精度几乎多了一个十进制数字(超出DBL_DIG

c++ - 在 C++14 中,在新表达式的维度中使用 double 值是否有效?

在C++14中给出以下代码:voidfoo(){doubled=5.0;autop1=newint[d];}clang在没有诊断的情况下编译它,而gcc产生以下诊断(seeitliveingodbolt):error:expressioninnew-declaratormusthaveintegralorenumerationtype7|autop1=newint[d];|^我特别标记了这个C++14,因为在C++11模式下,clang将其视为格式错误并产生以下诊断(seeitliveingodbolt):error:arraysizeexpressionmusthaveintegra

c++ - 使用 pow(x,2) 代替 x*x 和 x double 有什么好处吗?

使用此代码有什么好处doublex;doublesquare=pow(x,2);而不是这个?doublex;doublesquare=x*x;我更喜欢x*x并查看我的实现(Microsoft),我发现pow没有任何优势,因为x*x对于特定的方形情况比pow更简单。pow有什么特殊的情况吗? 最佳答案 FWIW,在MacOSX10.6上使用gcc-4.2和-O3编译器标志,x=x*x;和y=pow(y,2);导致相同汇编代码:#includevoidtest(double&x,double&y){x=x*x;y=pow(y,2);}组

c++ - double 或 float,哪个更快?

这个问题在这里已经有了答案:Isusingdoublefasterthanfloat?(10个回答)关闭8年前。我正在阅读“加速C++”。我发现一句话说“有时double在执行中比C++中的float更快”。读完句子后,我对float和double的工作感到困惑。请向我解释这一点。 最佳答案 取决于native硬件的功能。如果硬件是(或类似)具有传统x87数学的x86,float和double都(免费)扩展为内部80位格式,因此两者具有相同的性能(缓存占用空间除外/内存带宽)如果硬件像大多数现代ISA(包括x86-64,其中SSE2

c# - 在循环中使用 "double"作为计数器变量

在我目前正在阅读的一本书中,有一段摘录:Youcanalsouseafloating-pointvalueasaloopcounter.Here'sanexampleofaforloopwiththiskindofcounter:doublea(0.3),b(2.5);for(doublex=0.0;xThiscodefragmentcalculatesthevalueofa*x+bforvaluesofxfrom0.0to2.0,instepsof0.25;however,youneedtotakecarewhenusingafloating-pointcounterinaloop.

c++ - 表示任何 double 值所需的最大字符长度是多少?

当我将无符号的8位int转换为字符串时,我知道结果将始终最多为3个字符(对于255),对于有符号的8位int,我们需要4个字符,例如“-128”。现在我真正想知道的是浮点值也是一样的。将任何“double”或“float”值表示为字符串所需的最大字符数是多少?假设常规C/C++double(IEEE754)和常规十进制扩展(即没有%eprintf格式)。我什至不确定真正小的数字(即0.234234)是否会比真正的大数字(表示整数的double)更长? 最佳答案 标准标题在C中,或在C++中,包含几个与浮点类型的范围和其他度量有关的常

C++11 std::to_string(double) - 没有尾随零

今天试用了C++11STL的一些新功能,遇到了std::to_string。可爱,可爱的一组功能。为一个双字符串转换创建一个字符串流对象对我来说总是有点过头了,所以我很高兴我们现在可以做这样的事情:std::cout结果?0.330000我对此并不完全满意。有没有办法告诉std::to_string省略尾随零?我搜索了互联网,但据我所知,该函数只接受一个参数(要转换的值)。回到使用字符串流的“过去”,您可以设置流的宽度,但我宁愿不转换回来。之前有人遇到过这个问题/有解决方案吗?一些StackOverflow搜索结果一无所获。(C++11STL引用:http://en.cpprefere