草庐IT

float_val

全部标签

c++ - C++11 类型推断如何决定 float 或 double ?

考虑这个类型推断的例子:autovar=1.0;在C++11类型推断下,它的计算结果是float还是double?可以控制这种行为吗? 最佳答案 它将被评估为double是的,您可以控制它。在标准ISO-14882:2011中,2.14.4float文字,第1点:Thetypeofafloatingliteralisdoubleunlessexplicitlyspecifiedbyasuffix.ThesuffixesfandFspecifyfloat,thesuffixeslandLspecifylongdouble.Ifthes

c++ - 比 double 更精确的 float 据类型?

在我的项目中,我必须计算double元素矩阵的除法、乘法、减法和加法。问题是,当矩阵的大小增加时,我的输出精度会受到极大影响。目前,我对每个元素使用double,我认为它使用8字节的内存并且具有16位的精度,无论小数点位置如何。即使对于大尺寸矩阵,所有元素占用的内存也在几千字节的范围内。所以我可以负担得起使用需要更多内存的datatypes。所以我想知道哪种数据类型比double更精确。我试着在一些书中搜索,我可以找到longdouble。但我不知道它的精度是多少。如果我想要比这更高的精度怎么办? 最佳答案 根据维基百科,80位“I

c++ - 如何检查一个 float 是否是 C++ 中的真实数字?

如何检查float是否为真数?即:不是无穷大,负无穷大,NaN...floatf;??? 最佳答案 比std::fpclassify()更简单的是使用std::isfinite()Determinesifthegivenfloatingpointnumberarghasfinitevaluei.e.itisnormal,subnormalorzero,butnotinfiniteorNaN. 关于c++-如何检查一个float是否是C++中的真实数字?,我们在StackOverflow上

c++ - 精确为零的 float / double 相等

我有一个算法,它使用floats或doubles来执行一些计算。例子:doublea;doubleb;doublec;...doubleresult=c/(b-a);if((result>0)&&(result现在,我担心(b-a)可能为零。如果它接近于零但不为零,那没关系,因为result将超出有用范围,而且我已经检测到(如(b-a)接近零,result将接近+/-inf,这不在范围0-small_number...)但是如果(b-a)的结果恰好为零,我预计由于被零除会发生一些依赖于平台的事情。我可以将if语句更改为:if((!((b-a)==0.0))&&((result=c/(b

c++ - 将 float 舍入为 n 位有效数字的 C 例程?

假设我有一个float。我想将它四舍五入到一定数量的有效数字。在我的例子中n=6。所以说float是f=1.23456999;round(f,6)会得到1.23457f=123456.0001会得到123456有人知道这样的套路吗?它在网站上有效:http://ostermiller.org/calc/significant_figures.html 最佳答案 将数字乘以合适的比例因子,将所有有效数字移至小数点左侧。然后四舍五入最后反转操作:#includedoubleround_to_digits(doublevalue,intd

c++ - 将 int 转换为 float : how it is done

我刚接触C语言,想请教一个问题。此处的整数i转换为float,然后f(以某种方式)成功表示5.0:inti=5;floatf=i;//Somethinghappenedhere...但是如果我们尝试这种方法:inti=5;floatf=*(float*)&i;f不会得到5.0,因为它以“float方式”解释存储在i中的位。那么编译器在第一种情况下实际上做了什么魔术呢?这似乎是一项相当费力的工作......有人可以具体说明吗?谢谢。 最佳答案 这是一项费力的工作,但任何支持float的CPU都会提供执行此操作的指令。如果您必须自己将2

c++ - 用 ostringstream 舍入 float

我有一个关于使用ostringstream从float到C++字符串的转换的问题。这是我的台词:voiddoSomething(floatt){ostringstreamstream;stream当t的值为-0.89999时,它会四舍五入为-0.9,但当它的值为0.0999或小于1.754e-7时,它只会打印而不会四舍五入。有什么解决方案。 最佳答案 您需要使用precision设置ostringstream的精度例如stream.precision(3);stream 关于c++-用o

c++ - 在构造时初始化一个 float 组

在C++中有没有一种方法可以构造一个float组来初始化它的值?例如,我这样做:float*new_arr=newfloat[dimension];for(unsignedinti=0;i是否可以在施工期间进行分配? 最佳答案 float*new_arr=newfloat[dimension](); 关于c++-在构造时初始化一个float组,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

C++: "float"的 printf() 格式规范是什么?

C++:float的printf()格式规范是什么?(视觉C++)以前我是用%g来表示float,用%lg来表示double。看起来规范已更改,float未定义,double为%g。我正在打印出内存中的一些位,因此无法进行转换。有没有一种方法可以使用printf()打印出float值?更新:此代码是为对嵌入式系统上使用的通用C++库进行单元测试而编写的。这是我必须做的才能让float工作。代码在模板函数中:templateErrortestMatrixT(){...这是一个代码片段:if(typeid(Ttyp)==typeid(float)){float64c=*(float32*)

c++ - 类型转换双 float 的开销?

所以我有数兆字节的数据存储为需要通过网络发送的double...现在我不需要double提供的精度,所以我想在通过网络发送它们之前将它们转换为float网络。简单做的开销是多少:floatmyFloat=(float)myDouble;我将每隔几秒执行此操作数百万次,并且不想减慢任何速度。谢谢编辑:我的平台是带有VisualStudio2008的x64。编辑2:我无法控制它们的存储方式。 最佳答案 正如MichaelBurr所说,虽然开销在很大程度上取决于您的平台,但开销肯定少于通过网络发送它们所需的时间。粗略估计:800MBit/