如何从目标c中的文本框中获取浮点值

时间:2011-09-29 05:36:58

标签: objective-c

任何人都可以帮助我如何获取浮动值,因为它来自文本框

代表:我已输入40.7

rateField=[[rateField text] floatValue];

我的rateField值为40.7000008,但我只想40.7

请帮帮我。

提前致谢

谢谢每个人,

我尝试了所有可能性,但我无法得到我想要的东西。我不打算打印转换为字符串的值。我想使用该值进行计算。如果我再次使用数字格式化器,当我从数字转换为浮动时,它给出了相同的问题。所以我只想要浮动值,但它应该是我在文本框中给出的任何不应该用任何值填充。这是我的要求。请帮帮我。

谢谢并尊重巴鲁


谢谢每个人,

我尝试了所有可能性,但我无法得到我想要的东西。我不打算打印转换为字符串的值。我想使用该值进行计算。如果我再次使用数字格式化器,当我从数字转换为浮动时,它给出了相同的问题。所以我只想要浮动值,但它应该是我在文本框中给出的任何不应该用任何值填充。这是我的要求。请帮帮我。

感谢&安培;问候 巴鲁

4 个答案:

答案 0 :(得分:3)

这没关系。如果您使用40.7,则无法保证获得double

如果您想输出40.7,可以使用%.1fNSNumberFormatter

答案 1 :(得分:0)

尝试使用double代替。通常可以解决这个问题。与存储精度有关。

double dbl = [rateField.text doubleValue];

答案 2 :(得分:0)

使用浮点数时,由于数字在计算机内存中以二进制格式存储的方式,可能会发生这些事情。

它类似于1/3 = 0.33333333333333 ...的十进制数字。

处理此问题的最佳方法是在显示值的文本框中使用数字格式化程序。

答案 3 :(得分:0)

您已经解决浮动值。

  

浮点数的精度有限。虽然这取决于   系统,由于四舍五入的浮动相对误差将在1.1e-8左右   非基本算术运算可能会产生更大的误差   当然,在进行多次操作时必须考虑错误编制   是复杂的。

     

此外,有理数的数字可以完全表示为   基数10中的浮点数,如0.1或0.7,没有   精确表示为基数2中的浮点数,即   内部使用,无论尾数的大小。因此,他们   没有a就无法转换成它们的内部二进制对应物   精度损失小。这可能导致令人困惑的结果:for   例如,floor((0.1 + 0.7)* 10)通常会返回7而不是   预期8,因为内部表示将是类似的   7.9999999999999991118 ....

因此,如果你将这些数字用于输出,你应该使用一些舍入机制,即使是双值。