草庐IT

double-submit-prevention

全部标签

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

c++ - 所有整数值都完美地表示为 double 吗?

这个问题在这里已经有了答案:Representingintegersindoubles(4个回答)关闭5年前.我的问题是是否所有整数值都保证具有完美的双重表示。考虑以下打印“Same”的代码示例://Exampleprogram#include#includeintmain(){inta=3;intb=4;doubled_a(a);doubled_b(b);doubleint_sum=a+b;doubled_sum=d_a+d_b;if(double(int_sum)==d_sum){std::cout对于任何架构、任何编译器、a和b的任何值,这是否都保证是正确的?将任何整数i转换为d

c++ - 对 abs(double) 的模棱两可的重载调用

我有以下C++代码:#include#include//perhttp://www.cplusplus.com/reference/clibrary/cmath/abs///snip...if((loan_balanceloan_payment)){...}和make爆炸:error:callofoverloaded'abs(double)'isambiguous也很感兴趣:/usr/include/stdlib.h:785:note:candidatesare:intabs(int)如何指定编译器需要调用cmath.h中可以处理float的abs()?编译器信息(不确定这是否重要):

c++ - 如何从 C++ 生成均匀分布在 0 和 1 之间的随机 double ?

如何从C++生成一个随机的double值,均匀分布在0和1之间?当然我可以想到一些答案,但我想知道标准做法是什么,有:良好的标准合规性良好的随机性速度不错(对于我的应用来说,速度比随机性更重要)。非常感谢!PS:如果重要的话,我的目标平台是Linux和Windows。 最佳答案 一个老式的解决方案,例如:doubleX=((double)rand()/(double)RAND_MAX);应该满足您的所有标准(便携、标准和快速)。显然生成的随机数必须播种标准程序是这样的:srand((unsigned)time(NULL));

c++ - 使用 2 "double"s 模拟 "float"

我正在为仅支持32位单精度浮点运算的嵌入式硬件编写程序。然而,我正在实现的算法需要64位double加法和比较。我正在尝试使用两个float的元组来模拟double数据类型。因此,doubled将被模拟为包含元组的struct:(floatd.hi,floatd.low)。使用字典顺序进行比较应该简单明了。然而,添加有点棘手,因为我不确定我应该使用哪个基础。应该是FLT_MAX吗?以及如何检测进位?如何做到这一点?编辑(清晰):我需要额外的有效数字而不是额外的范围。 最佳答案 double-float是一种技术,它使用成对的单精度数

c++ - C++中的无符号 double ?

为什么C++不支持无符号double语法? 最佳答案 因为典型的浮点格式不支持无符号数。例如,参见thislistofIEEE754formats.添加普通硬件不支持的数字格式只会让编译器编写者的生活变得困难,而且可能不值得付出努力。 关于c++-C++中的无符号double?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2523025/