[英]Convert NSString to NSNumber precision issue
我有一個約7位小數的字符串: @"-28.1234212"
我想將其轉換為NSNumber
而不損失任何精度。 當我執行以下操作時,我僅以小數點后四位結束。
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber* convertedNum = [f numberFromString:@"-28.1234212"];
現在, -28.1234212
是-28.1234
而不是-28.1234212
。
有可能做到這一點而又不會失去精度嗎?
更改數字格式化程序樣式
[f setNumberStyle:kCFNumberFormatterNoStyle];
使用kCFNumberFormatterNoStyle樣式
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:kCFNumberFormatterNoStyle];
NSNumber* convertedNum = [f numberFromString:@"-28.1234212"];
NSLog(@"%@",convertedNum);
如果要查找precision,則可以使用NSDecimalNumber。
NSDecimalNumber *convertedNUm = [NSDecimalNumber decimalNumberWithString:@"-28.1234212"]
NSString *nowValue =@"-28.1234212";
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:kCFNumberFormatterNoStyle];
NSNumber * nowNum = [f numberFromString:nowValue];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:4]; //set max fraction digit
NSNumber *nowValueFormatted = [formatter stringFromNumber:nowNum];
NSLog(@"%@",nowNum);
NSLog(@"%@",nowValueFormatted);
這可能對您有幫助:)
為什么需要格式化程序? 您可以直接將其轉換為NSNumber
NSString *douStr = @"-28.1234212";
NSNumber *num = [NSNumber numberWithDouble:douStr.doubleValue];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.