如何比较双精度数和小数点后30位精度最高?

时间:2019-06-11 07:57:11

标签: ios objective-c math nsnumber

我需要将两个大十进制数与30个小数位进行比较。我还需要在小数点后30位检测出差异,因此我需要这样做:

double number_1=80.004752165027610999459284357728;
double number_2=80.004752165027610999459284357727;

导致此:

double result = 0.000000000000000000000000000001

由于数字本身的性质,这似乎是不可能的(我已经尝试过使用float,long double)。我只有一组有限的小数位数可以操作。那么在那种情况下我如何才能达到更好的精度呢?也许我可以使用某些框架的功能?我在nsnumber和google中没有发现有用的东西

1 个答案:

答案 0 :(得分:1)

您可以使用NSDecimalNumber。它最多可以使用38位数字。

  

NSDecimalNumber是NSNumber的不可变子类,它提供了一个   面向对象的包装器,用于执行以10为底的算术运算。一个实例可以   表示可以表示为尾数x 10 ^指数的任何数字   尾数是十进制整数,最长38位,并且是指数   是从–128到127的整数。

Documentation