C++中的双精度,308位数字还是15位数字?

C++中的双精度,308位数字还是15位数字?

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 提供, 点击上面的可以查看英文原文,

相关文章

Unity常用组件
线上365bet

Unity常用组件

📅 07-19 👁️ 3471
手机就可以充值羊城通卡,1分钟攻略立即收藏!
eStarPro战队介绍-王者荣耀武汉eStarPro战队成员名单资料-最新动态-比赛视频