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

how to compare double number with 30 decimal places with the highest precision?

我需要比较两个小数点后 30 位的大十进制数。我还需要检测小数点后 30 位的差异,所以在我的需要中:

double number_1=80.004752165027610999459284357728;
double number_2=80.004752165027610999459284357727;

导致这个:

double result = 0.000000000000000000000000000001

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

中没有发现任何有用的东西

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

NSDecimalNumber, an immutable subclass of NSNumber, provides an object-oriented wrapper for doing base-10 arithmetic. An instance can represent any number that can be expressed as mantissa x 10^exponent where mantissa is a decimal integer up to 38 digits long, and exponent is an integer from –128 through 127.

Documentation