C++中的双精度,308位数字还是15位数字?c++doubleprecision33如果double类型的数值可以达到3.4E308(308个零),那么为什么我们说double只存储15个数字呢?为什么要说“10的308次方”?
- Denis21值 10000000000000000001 和值 10000000000000000002 被以相同的方式存储。你无法区分它们。因此,最后一位数字并不重要。 - Jeffrey1范围的数字 ≠ 精度的数字 - Eljay2个回答1212我们不说"double仅存储15个数字",我们说"double有15位数字精度"。这意味着当将double的计算值以十进制数字序列打印时,只有这15位数字是准确的。
double可以表示3.4E308。是的,要打印它,您需要更多的15位数字精度。某些特定值由于浮点实现具有这些保证。但是,例如,一个在double范围内的数字3.4E308-1,不能准确地由double表示。
如果想要确保,只需取double的前15位数字。一些值可以用超过15位数字正确表示,但有些则不行。在double范围内的每个值都将在其小数表示的第15位数字之前正确表示。
- Fureeish1为了让 double 在二进制 -> 十进制 -> 二进制的转换中不发生变化,您需要使用 17 个十进制数字。无论如何,我强烈推荐阅读有关Ryu 算法的内容。 - C.M.回答链接33为了让大家更容易理解,可以考虑一种数字类型,它可以表示以下数字:
-100000
-100
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+100
+100000
这种类型可以表示高达100000的数字。这种类型有6位有效数字还是1位?
- eerorika回答链接网页内容由stack overflow 提供, 点击上面的可以查看英文原文,