我需要将浮点数保存到NSNumber(称为ordered.value的变量)中.问题是转换期间十进制数字已设置为零.
此外,我添加了3版变量的日志,以便您可以看到原始浮点数是正确的.然后NSNumber丢失了十进制数字.
这是我的第一次尝试(更简单的版本):
ordered.value = [NSNumber numberWithFloat:[o.valore floatValue]];
NSLog(@"%f,%f",[o.valore floatValue],[ordered.value floatValue]);
Run Code Online (Sandbox Code Playgroud)
但我仍然丢失十进制数字.日志:
2013-05-20 20:05:19.617 Piazzetta[9636:c07] 232.179993,232.000000
2013-05-20 20:05:19.617 Piazzetta[9636:c07] 20159.490234,20159.000000
2013-05-20 20:05:19.618 Piazzetta[9636:c07] 16.540001,16.000000
Run Code Online (Sandbox Code Playgroud)
这是我的第二次尝试(使用NSNumberFormatter)
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
ordered.value = [f numberFromString:o.valore];
NSLog(@"%f,%f",[o.valore floatValue],[ordered.value floatValue]);
Run Code Online (Sandbox Code Playgroud)
日志:
2013-05-20 20:16:22.781 Piazzetta[9951:c07] 232.179993,232.000000
2013-05-20 20:16:22.782 Piazzetta[9951:c07] 20159.490234,20159.000000
2013-05-20 20:16:22.782 Piazzetta[9951:c07] 16.540001,16.000000
Run Code Online (Sandbox Code Playgroud)
我刚试过你的代码的简化版本:
NSString *valore = @"232.179993";
NSNumber *ordered = [NSNumber numberWithFloat:[valore floatValue]];
NSLog(@"Results: %f,%f",[valore floatValue],[ordered floatValue]);
Run Code Online (Sandbox Code Playgroud)
其效果与预期一致:
// Results: 232.179993,232.179993
Run Code Online (Sandbox Code Playgroud)
这让我相信它在您的ordered
对象中被修改(可能通过您的value
属性的setter或getter ).
如果你无法追踪,请发布setter和/或getter的代码,我们可以看一下.
归档时间: |
|
查看次数: |
1317 次 |
最近记录: |