双向NSString转换错误

时间:2013-08-04 20:44:47

标签: nsstring double

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

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

1 个答案:

答案 0 :(得分:1)

浮点值无法准确表示每个实数,因此您通常会略微偏离这样的结果。例如,(1.0 / 3.0) * 3.0并不精确地给出1。