2011-09-29 49 views
0

任何一个可以帮我如何获得浮点值,因为它是从文本框如何获得浮点值,因为它是从目标C文本框中

防爆:我已经进入40.7

rateField=[[rateField text] floatValue]; 

我得到rateField值为40.7000008但我只需要40.7

请帮帮我。

在此先感谢

感谢每一个身体,

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

感谢&认为巴鲁


感谢每一个身体,

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

感谢&问候 巴鲁

回答

0

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

double dbl = [rateField.text doubleValue];

+0

谢谢你的回复,但我没有得到双重 – Balu

3

这是确定。如果您甚至使用double,则不能保证您会得到40.7

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

0

当使用浮点数,这些东西都可以的,因为数字存储在计算机内存中的二进制格式的方式发生。

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

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

+0

感谢您的回复。打印是好的。但我想要使用字符串执行操作的精确值,我们无法执行操作。所以我只需要以浮点形式的文本框中的值。这些值应该是给定的格式,它们不应该被填充任何值。我们可以使用NumberFormater来做,但是如果我们将数字转换为浮动同样的问题重复。所以请给我解决方案除了截断它可能不会给出准确的价值。 – Balu

0

您已经解决了浮点值。

浮点数的精度有限。虽然它取决于系统 ,但舍入引起的浮点相对误差大约为1。1e-8 非基本算术运算可能会给出更大的错误,并且当然,当几个操作 复合时必须考虑错误编程。

此外,有理数是在基座10,如0.1或0.7精确表示作为 浮点数,没有一个 精确表示作为浮点数在基座2,其是 内部使用,不管尾数的大小。因此,他们 不能被转换成其内部的二进制对应,没有一个精度的小损失。这可能导致混乱的结果: 例如,地板((0.1 + 0.7)* 10)通常会返回7代替 预期8,由于内部表示将会像 7.9999999999999991118 ....

所以,如果你使用这些数字输出,你应该使用一些舍入机制,即使对于double值。

相关问题