相关疑难解决方法(0)

浮点精度是可变的还是不变的?

我不断得到浮点数(即float,, doublelong double)是否只有一个精度值,或者具有可以变化的精度值的混合答案.

一个名为float vs. double precision的主题似乎暗示浮点精度是绝对的.

然而,另一个叫做float和double之间差异的话题说,

通常,double具有15到16个十进制数字的精度

另一位消息人士

float类型的变量通常具有大约 7位有效数字的精度

double类型的变量通常具有大约 16位有效数字的精度

如果我正在使用敏感代码,当我的值不准确时,我不喜欢引用上面的近似值.所以让我们记录下来吧.浮点精度是可变的还是不变的,为什么?

floating-point binary decimal significant-digits floating-point-precision

38
推荐指数
7
解决办法
2373
查看次数

如何检查C++编译器是否使用IEEE 754浮点标准

我想问一个跟随这个问题的问题,如果编译器使用标准,那么定义检查可以很好地回答这个问题.然而,这只适用于C.有没有办法在C++中做同样的事情?

我不希望将浮点类型转换为文本或使用一些非常复杂的转换函数.我只需要编译器检查.如果您知道此类兼容编译器的列表,请发布链接.我找不到.

c++ compiler-construction floating-point ieee-754

28
推荐指数
1
解决办法
1万
查看次数

最重要的十进制数字精度是否可以转换为二进制并返回到十进制而不会丢失重要性6或7.225?

我遇到了两种不同的浮点数精度公式.

⌊(N-1)log 10(2)⌋= 6位小数(单精度)

N log 10(2)≈7.225十进制数字(单精度)

其中N = 24个有效位(单精度)

第一个公式位于由W. Kahan教授撰写的" IEEE标准754二进制浮点运算 " 第4页的顶部.

第二个公式可以在维基百科文章" 单精度浮点格式 "的IEEE 754单精度二进制浮点格式:binary32下找到.

对于第一个公式,W.Kahan教授说

如果十进制字符串最多为6 sig.(分解). 转换为Single,然后转换回相同数量的sig.dec.,那么最后的字符串应该与原始字符串匹配.

对于第二个公式,维基百科说

...总精度为24位(相当于log 10(2 24)≈7.225十进制数字).

两个公式(6和7.225十进制数字)的结果是不同的,我希望它们是相同的,因为我假设它们都是为了表示最有效的十进制数字,可以转换为浮点二进制,然后转换回来十进制,其开头的有效十进制数字相同.

为什么这两个数字不同,什么是最重要的十进制数字精度可以转换为二进制并返回到十进制而不会失去重要性?

floating-point binary decimal significant-digits floating-point-precision

21
推荐指数
2
解决办法
2614
查看次数