这是一个非常简单的问题。在我看来,双打的上限大约是15位小数。例如,请使用以下代码段:
var test : Double = 3.141592653589793238462643383279
Swift playgrounds将此Double的值显示为3.141592653589793。有没有办法在Double上获得超过15个小数位?从Apple的文档中,听起来应该是可能的:
Double的精度至少为15位十进制数,而 Float的精度可以低至6位十进制数。该 适当的浮点类型取决于性质和范围 您需要在代码中使用的值。在哪些情况下 两种类型都是合适的,Double是首选。
说“至少”的部分看起来这是可能的,但我找不到任何这样做的方法。我也知道Swift Playgrounds不是简单地截断输出中的值。以下代码返回true,即使值不相同,因此很明显double只存储并比较最多15个小数位:
var test : Double = 3.141592653589793238462643383279
var result = test == 3.1415926535897932384626433
答案 0 :(得分:0)
为获得更高的精度,请使用Float80 Type
(此结构的第一位用于符号):
Float80.exponentBitCount // 15
Float80.significandBitCount // 63
Double.exponentBitCount // 11
Double.significandBitCount // 52
希望这会有所帮助。