草庐IT

double_bits

全部标签

c++ - 使用标量类型的 "const"的好处? (例如 "const double"或 "const int")

///////////////////////////////////////classA{...constdoublefunA(void){...}};Aa;doublex=a.funA();//althoughtheintentionisto//enforcethereturnvaluetobeconstandcannotbe//modified,ithaslittleeffectintherealworld.classA2{...doublefunB(void){...}};///////////////////////////////////////classA{voidset

c++ - 缩小从 double 到 float 的转换 : is overflow behaviour guaranteed?

如果我试试这个floatf=(float)numeric_limits::infinity();或者实际上,尝试将任何大于floatmax的值转换为float,我能保证最终得到无穷大吗?它适用于GCC,但它是标准吗? 最佳答案 floatf=(float)numeric_limits::infinity();这保证设置f如果您的编译平台提供用于浮点计算的IEEE754算法(通常会提供),则为无穷大。Orindeed,trytocastanythingbiggerthanfloatmaxdowntoafloat,amIguarante

c++ - 为什么 complex<double> * int 没有在 C++ 中定义?

C++程序#include#includeintmain(){std::complexz(0,2);intn=3;std::cout产生错误:‘z*n’中的‘operator*’不匹配。为什么?我正在使用g++4.4.1进行编译。也许编译器只是遵循C++标准,在这种情况下我的问题是:为什么标准不允许这样做? 最佳答案 这个有效:#include#includeintmain(){std::complexz(0,2);doublen=3.0;//Note,doublestd::cout因为复数由双数组成,所以它与双数相乘。查看声明:t

c++ - double to string 没有科学记数法或尾随零,有效

此例程被调用无数次以创建充满数字的大型csv文件。有更有效的方法吗?staticstd::stringdbl2str(doubled){std::stringstreamss;ss123.12,123.000=>123.)return(s[s.size()-1]=='.')?s.substr(0,s.size()-1):s;//removedanglingdecimal(123.=>123)} 最佳答案 开始之前,请检查此功能是否花费了大量时间。通过使用分析器或其他方式进行测量来做到这一点。知道你调用它无数次是很好的,但如果你的程序

c++ - 为什么在 64 位系统上 float 不是 double?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。考虑到int在32位系统上是4个字节,在64位系统上是8个字节,为什么float的处理方式不同?为什么sizeofadouble!=sizeofafloat在64位系统上?考虑到当我声明一个int(导致higherperformance)时选择了最好的native整数类型,float不应该发生同样的事情(这也导致性能提升)?相关问题:声明在32位系统上为

c++ - 确定字符串是否为 double

我想看看一个字符串是否包含一个double作为它的唯一内容。换句话说,如果它可能是以下函数的输出:stringdoubleToString(doublenum){stringstreams;s 最佳答案 你想要strtod功能。boolisOnlyDouble(constchar*str){char*endptr=0;strtod(str,&endptr);if(*endptr!='\0'||endptr==str)returnfalse;returntrue;} 关于c++-确定字符串

c++ - 在 C++ 中将 Double 转换为 String

我在尝试将double型转换为C++字符串时遇到了一些问题。这是我的代码std::stringdoubleToString(doubleval){std::ostringstreamout;out我遇到的问题是,是否将double值作为“10000000”传入。那么返回的字符串值为1e+007如何获取字符串值“10000000” 最佳答案 #includeusingnamespacestd;//...out您还可以考虑使用setprecision来设置小数位数:out 关于c++-在C+

c++ - 使用 std::unique_ptr 的 double (二维)数组

我有一个由指向指针的指针分配的double组。//pointertopointerint**x=newint*[5];//allocationfor(i=0;i我正在尝试使用unique_ptr来做到这一点:std::unique_ptr[]>a(newstd::unique_ptr[5]);for(i=0;i但一直收到错误消息说没有operator=匹配这些操作数。我在这里做错了什么? 最佳答案 您不能分配int*到std::unique_ptr,这就是你的错误的原因。正确的代码是a[i]=std::unique_ptr(newi

c++ - 为什么 double 的值在分配后似乎发生了变化?

在我的机器上,以下程序的结果对我来说有点奇怪。#includeusingnamespacestd;intmain(){doublea=20;doubleb=0.020;doublec=1000.0;doubled=b*c;if(a输出:$./testa我知道double不是那么准确,因为精度。但我不希望该值发生变化并给出不一致的比较结果。如果a打印出来,我确实希望a也应该打印出来。但是当我在我的i686服务器甚至我的cygwin上运行这段代码时。我可以看到a但看不到a.已确认此问题与平台有关。这是双重赋值的指令和实现方式不同造成的吗?更新生成的程序集:main:.LFB1482:pus

c++ - 模板编译失败 : 'double' is not a valid type for a template constant parameter

templateclassLowerBoundedType{};templateclassvectorelement{};templateclassvectorelement{typedefLowerBoundedTypetype;};有错误:error:'double'isnotavalidtypeforatemplateconstantparameter 最佳答案 唯一对非类型模板参数有效的数字类型是整数和枚举。因此,您不能拥有double类型的非类型模板参数。 关于c++-模板编译