2016-07-19 3 views
0

NSString является @"16.240" это doubleValue является 16.239999999999998Почему doubleValue NSString отличается от исходной строки?

Что происходило за кулисами?

+0

вы можете показать ур код –

+0

код просто, 'self.price = text.doubleValue' в методе textDidChange. @ Anbu.Karthik – Gon

+0

, если вы конвертируете из double в строку, округлите его значение –

ответ

0

Из-за ошибки округления с плавающей точкой.

Long-story-short; не каждое число может быть представлено с использованием типов с плавающей запятой.

Литература: #1, #2, #3.

0

Если это ценность для цены (или денег в целом), лучше использовать NSDecimalNumber, потому что она сохраняет каждую часть значения поплавка как есть.

NSDecimalNumber *price = [NSDecimalNumber decimalNumberWithString:@"16.240"]; 
NSLog(price); //16.24 

http://rypress.com/tutorials/objective-c/data-types/nsdecimalnumber

Смежные вопросы