我已经拍摄了两个UITextFields&一个标签,用于获取插入文本字段中的浮点值的结果。这是我所做的代码。 这里的问题在我最初在float中获取textfields值时开始,它正在改变。
- (IBAction)btnCalculateAmountSelected:(id)sender
{
NSLog(@"[_txtField1.text floatValue] is:--> %f ----- [_txtField2.text floatValue] is:--> %f",[_txtField1.text floatValue],[_txtField2.text floatValue]);
float result = [_txtField1.text floatValue] - [_txtField2.text floatValue];
NSLog(@"actual result is:--> %f",result);
float truncatedFloat = truncf(result * 100) / 100.0;
NSLog(@"truncatedFloat is:--> %f",truncatedFloat);
_lblResult.text = [NSString stringWithFormat:@"%f", truncatedFloat];
NSLog(@"_lblResult.text is:--> %@",_lblResult.text);
}
输出为: -
[_txtField1.text floatValue] is:--> 1234.123413 ----- [_txtField2.text floatValue] is:--> 1234.111084
actual result is:--> 0.012329
truncatedFloat is:--> 0.010000
_lblResult.text is:--> 0.010000
答案 0 :(得分:2)
所以有两个回应:
1)浮点数的精度有限 - 如果你想要更高的精度,使用双精度浮点数。
2)如果您的问题是您正在处理货币,比如美元和美分,请保持您的价值为美分,当显示的美分为模数100且美元为美分/ 100时 - 您永远不会得到奇数值如果你这样做。
答案 1 :(得分:1)
使用double作为数据类型
像 double result = [_txtField1.text doubleValue] - [_txtField2.text doubleValue];
答案 2 :(得分:0)
请尝试使用此。您知道每个浮点变量在Dot之后返回6个值。所以请使用%。4f 而不是%f 。
NSLog(@"[_txtField1.text floatValue] is:--> %.4f ----- [_txtField2.text floatValue] is:--> %.4f",[_txtField1.text floatValue],[_txtField2.text floatValue]);
输出:
[_ txtField1.text floatValue]是: - > 1234.1234 ----- [_txtField2.text floatValue]是: - > 1234.1111 强>
我希望你得到答案。