获得超过15个小数位的Swift

时间:2017-03-27 23:33:47

标签: swift cocoa-touch double

这是一个非常简单的问题。在我看来,双打的上限大约是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

1 个答案:

答案 0 :(得分:0)

为获得更高的精度,请使用Float80 Type(此结构的第一位用于符号):

Float80.exponentBitCount        // 15
Float80.significandBitCount     // 63

Double.exponentBitCount         // 11
Double.significandBitCount      // 52

enter image description here

希望这会有所帮助。