在 Swift 中可以存储为 Double 且不丢失精度的最大值是多少?

问题描述 投票:0回答:1

根据 Swift 的说法,可以存储为

Double
的最大有限幅度远大于
Int

print(Double.greatestFiniteMagnitude) // 1.7976931348623157e+308

但是,this问题的公认答案表明您在存储大值时可能会失去精度。

那么,在不损失精度的情况下,可以保存为 Double 的最大值是多少?

swift double
1个回答
0
投票
UInt64(2) << Double.significandBitCount

即2^53.

即9,007,199,254,739,992.

Swift

Double
遵循IEEE 754,它指定它们的尾数1为52个显式位加1个隐式位(对于正常形式的双精度数始终为0b1)。

所有具有该大小或更小的整数都可以在

Double
内完美表示;在
UInt64
Double
之间转换它们没有任何损失。


¹ 有时称为“尾数”,如 Swift 的

Double
API 中所示。

© www.soinside.com 2019 - 2024. All rights reserved.