这是一个非常简单的问题。我发现Double类型的数字最多只能保留15位小数。举个例子,看下面的代码片段:
var test : Double = 3.141592653589793238462643383279
Swift playgrounds将这个Double的值显示为3.141592653589793。有没有可能让Double保留超过15位小数?从苹果的文档来看,似乎应该是可能的:
“Double的精度至少为15位小数,而Float的精度可能只有6位小数。使用适当的浮点类型取决于您的代码中需要处理的值的性质和范围。在任何一种类型都可以使用的情况下,优先选择Double。”
其中“至少”一词表明这是可能的,但我找不到任何方法来实现。我也知道这不是Swift Playgrounds简单地截断输出中的值。以下代码返回true,即使值不同,因此很明显double仅存储并比较了15位小数:
var test : Double = 3.141592653589793238462643383279
var result = test == 3.1415926535897932384626433
Double
的全部内容。看一下NSDecimalNumber
/Decimal
,可以获取最高达到38的值。 - rmaddy