我需要将两个大十进制数与30个小数位进行比较。我还需要在小数点后30位检测出差异,因此我需要这样做:
double number_1=80.004752165027610999459284357728;
double number_2=80.004752165027610999459284357727;
导致此:
double result = 0.000000000000000000000000000001
由于数字本身的性质,这似乎是不可能的(我已经尝试过使用float,long double)。我只有一组有限的小数位数可以操作。那么在那种情况下我如何才能达到更好的精度呢?也许我可以使用某些框架的功能?我在nsnumber和google中没有发现有用的东西
答案 0 :(得分:1)
您可以使用NSDecimalNumber
。它最多可以使用38位数字。
NSDecimalNumber是NSNumber的不可变子类,它提供了一个 面向对象的包装器,用于执行以10为底的算术运算。一个实例可以 表示可以表示为尾数x 10 ^指数的任何数字 尾数是十进制整数,最长38位,并且是指数 是从–128到127的整数。