0

我采用了两个 UITextFields 和一个标签来获取插入到文本字段中的浮点值的结果。这是我所做的代码。当我最初将文本字段值设为浮点数时,问题就开始了,它正在发生变化。

- (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
4

3 回答 3

2

所以有两个回应:

1) 浮点数的精度有限 - 如果您想要更高的精度,请使用双精度而不是浮点数。

2)如果您的问题是您正在处理货币,例如美元和美分,请将您的值保持为美分,并且当显示的美分是模数 100 并且美元是美分/100 时 - 如果您这样做,您将永远不会得到奇数这个。

于 2013-05-08T13:26:04.090 回答
1

使用 double 作为数据类型

像双倍结果 = [_txtField1.text doubleValue] - [_txtField2.text doubleValue];

于 2013-05-08T13:37:28.407 回答
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] is:--> 1234.1234 ----- [_txtField2.text floatValue] is:--> 1234.1111

我希望你得到你的答案。

于 2013-05-08T13:29:23.930 回答