草庐IT

Double-precision_floating-point_f

全部标签

c++ - 正确地(独立于 32 位/64 位)将 float 保存到二进制 ofstream

显然在我的机器上,float、double和longdouble各有不同的大小。似乎也没有严格的标准来强制执行每种类型必须有多少字节。然后,如何将浮点值保存到二进制文件中,然后在大小不同的情况下在不同的系统上正确读取它?例如,我的机器有8个字节的double,而乔的有12个字节的double。无需以文本形式导出(例如“0.3232”),也就是说。看起来比二进制表示要紧凑得多。 最佳答案 你必须定义一个格式,并实现它。通常,大多数我知道的网络协议(protocol)使用IEEEfloat和double,输出big-endian(但其他

c++ - 如何将 float 变量分配给 unsigned int 变量,位图,而不是强制转换

我知道这样做很奇怪,而且不可移植。但是我有一个分配的无符号整数数组,我偶尔想在其中“存储”一个float。我不想转换float或将其转换为最接近的等效int;我想将float的精确位图存储在分配给unsignedint的空间中,这样我以后可以将它作为float检索,并且它会保留其原始float值。 最佳答案 这可以通过简单的复制来实现:uint32_tdst;floatsrc=get_float();char*constp=reinterpret_cast(&dst);std::copy(p,p+sizeof(float),rein

c++ - 将指针转换为 float ?

我有一个unsignedchar*。通常这指向一大块数据,但在某些情况下,指针是数据,即。将int值转换为unsignedchar*指针(unsignedchar*intData=(unsignedchar*)myInteger;),反之亦然。但是,我需要使用float值来执行此操作,但它一直给我转换错误。unsignedchar*data;floatmyFloat=(float)data;我该怎么做? 最佳答案 位播:templateinlineDestbit_cast(Sourceconst&source){static_ass

c++ - 为 vector<double> 类重载 *, +, -' 运算符

我正在编写一个Line类来制作数值方法,我想要这些运算符(*、+、-)使我的代码更具可读性和更容易理解。#includeusingnamespacestd;typedefvectorVector;classLine:publicVector{public:Line();~Line();Lineoperator+(Line);Lineoperator-(Line);Lineoperator*(double);};LineLine::operator*(doublealfa){Linetemp;intn=size();temp.resize(n);for(inti=0;iat(i)*alf

c++ - float转QString的格式

我想将float转换为QString,但将.替换为,。例如,我希望将float12.95转换为看起来像12,95的QString。我想我可以用类似的东西来做:QString().sprintf("%something",myFloat);但是我应该怎么写而不是%something呢?也许我可以这样做:QString::number(myFloat,'f').replace(".",",")但它不是很漂亮... 最佳答案 你试过了吗QLocale::toString()已经?以下代码应返回以逗号作为小数点分隔符的float:QLoca

c++ - 如何检查字符串是否可以在 C++ 中转换为 double ?

我有一个字符串,它可以是数字(甚至是float或double类型,不仅是整数),也可以是非数字的单词。我想检查这个字符串是否可以转换为double,如果可以,那么我想进行转换。如果是非数字字符串,我想要不同的行为。我试过这个:doubletmp;stringstr;stringstreamss;ss>tmp;if(ss.fail()){//non-numericstring}else{//stringtodoubleconversionissuccessful}此代码的问题在于ss.fail()总是true,即使tmp包含正确的值。有一个函数叫做atof()它将字符串转换为double

c++ - 一个 "hack"来获取 float 模板参数工作编译但在 g++ 和 clang 上出现段错误

我知道whyIcan'tusefloatastemplateparameter以及如何设置模板类的staticconstfloat成员,这要归功于一对分子/分母。但我正在尝试另一个基于reinterpret_cast的“hack”,以从其IEEE754十六进制书写中“emule”float模板参数。这是一小段代码:#include#includetemplatestructMyStruct{staticconstfloatvalue;};templateconstfloatMyStruct::value=*reinterpret_cast(T);intmain(){typedefMyS

c++ - 定义最大 double 时,“无法在初始化中将 'double (*)() noexcept' 转换为 'double'”

我读到使用最大double值的标准C++方法是std::numeric_limits::max.然后在我想要将我的double初始化为我使用的最大double的每个函数中:#include#defineMAX_DOUBLE(std::numeric_limits::max)使用gcc-pedantic-pedantic-errors-Wall-Wextra-Werror,我得到以下错误:Cannotconvert'double(*)()noexcept'to'double'ininitialization你能解释一下这个错误吗? 最佳答案

C++ : double iteration through map

我想遍历一个map,但内部循环只会遍历元素的上半部分。使用vector它看起来像这样:for(autoelement1=myVector.begin();element1!=myVector.end();++element1){for(autoelement2=element1+1;element2!=myVector.end();++element2){//mystuff}}但是对于mapelement1+1返回错误nooperatormatchesthisoperand..我相信这是因为元素在map中没有排序.那么我怎样才能正确地做到这一点呢?我目前正在使用这种需要在每个循环中进行

c++ - IEEE 754 float ,< 1 的最大数是多少?

当使用IEEE754浮点表示法(c++中的double类型)时,非常接近(可表示)整数的数字将四舍五入到最接近的整数并精确表示。是真的吗?在四舍五入之前,一个数字必须与最接近的可表示整数到底有多接近?这个距离是常数吗?例如,如果1可以精确表示,那么小于1的最大double是多少? 最佳答案 WhenusingIEEE754floatingpointrepresentation(doubletypeinc++),numbersthatareverycloseto(representable)integersareroundedtoth