如何在Swift中获得Float80的全部精度?

时间:2017-05-16 18:49:55

标签: swift

每当我尝试获取Float80的字符串表示时,我都无法越过小数部分的前20位数字。

let fract: Float80 = Float80(exactly: Float80(1) / Float80(i))!

let stringRep = fract.description

我也试过PI

print(Float80.pi.debugDescription)

1 个答案:

答案 0 :(得分:2)

Float80.exponentBitCount /* 15 */ Float80.significandBitCount /* 63 */ 类型的精度如下:

Double

此外,此结构的第一位用于符号。

enter image description here

但是! Apple文档says

  

15 decimal digits 的精度至少为 Float,而精度为 6 decimal digits 可以at least。要使用的适当浮点类型取决于您需要在代码中使用的值的性质和范围。在任何一种都适合的情况下,最好使用Double。

因此,重点必须放在 def get_nested_elements_by_index(nested_list, index): output_list = [] for sub_list in nested_list: if len(sub_list) > index: output_list.append(sub_list[index]) return output_list nested = [ ["nest1_A", "nest1_B", "nest1_C"], ["nest2_A", "nest2_B", "nest2_C"], ["nest3_A", "nest3_B", "nest3_C"], ] print( "First set:\n{first}\n\nSecond set:\n{second}\n\nThird set:\n{third}\n".format( first="\n".join(get_nested_elements_by_index(nested, 0)), second="\n".join(get_nested_elements_by_index(nested, 1)), third="\n".join(get_nested_elements_by_index(nested, 2)), ) ) 的15个十进制数字上。不能保证为您提供更高的精度。但是所有计算都是在80位的位深度进行的。

希望这会有所帮助。