2013-05-08 99 views
-1

我已经采取了两个UITextFields &一个标签来获得插入到文本字段中的浮点值的结果。这是我所做的代码。 这里问题开始时,我最初采取浮动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); 
} 

enter image description here

输出为: -

[_txtField1.text floatValue] is:--> 1234.123413 ----- [_txtField2.text floatValue] is:--> 1234.111084 
actual result is:--> 0.
truncatedFloat is:--> 0.010000 
_lblResult.text is:--> 0.010000 
+3

??你的问题是什么 ?? – Bonnie 2013-05-08 13:23:05

+0

你想要什么? – 2013-05-08 13:23:20

+0

这里问题开始时,我最初采取浮动textfields值,它正在改变。 – 2013-05-08 13:23:43

回答

2

所以两种反应:

1)彩车具有有限的精度 - 如果你想更精确的使用双打不浮动。 2)如果你的问题是你正在处理的是货币,比如美元和美分,那么把你的价值保留为美分,当显示的美分是100的模数,美元是100美分时 - 你永远不会得到奇数值,如果你这样做。

+0

或使用'NSDecimalNumber' – Abizern 2013-05-08 13:29:37

+0

@ david-h谢谢...这是正常工作,并提供所需的输出。 – 2013-05-08 13:38:32

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

希望你有你的答案。

+0

在这种情况下,如果小数点后4位的数值将会在计算时被考虑。 – 2013-05-09 05:05:20

+0

是的你是对的。因为我以为你只想打印这个值所以我给出了这个答案。 – 2013-05-09 05:09:45

+0

这是完全正确的...但你可以看到我输入textFields和NSLog中的文本域值的值完全不同。 – 2013-05-09 05:12:18

1

使用双作为数据类型

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