-1
double M=log(7);
M=pow(M_E,M);             // M = 7 !!!!!!

NSString *B = [[NSNumber numberWithDouble:M] stringValue]; // B=6.999999999 !!!!

但:

double M=7;
NSString *B = [[NSNumber numberWithDouble:M] stringValue]; // B=7

为什么这两个例子会产生不同的结果?

4

1 回答 1

1

浮点值不能精确地表示每个实数,因此您通常会得到非常轻微的这样的结果。例如,(1.0 / 3.0) * 3.0不精确地给出 1。

于 2013-08-04T20:50:34.010 回答