任何人都可以帮助我如何获取浮动值,因为它来自文本框
代表:我已输入40.7
rateField=[[rateField text] floatValue];
我的rateField
值为40.7000008
,但我只想40.7
。
请帮帮我。
提前致谢
谢谢每个人,
我尝试了所有可能性,但我无法得到我想要的东西。我不打算打印转换为字符串的值。我想使用该值进行计算。如果我再次使用数字格式化器,当我从数字转换为浮动时,它给出了相同的问题。所以我只想要浮动值,但它应该是我在文本框中给出的任何不应该用任何值填充。这是我的要求。请帮帮我。
谢谢并尊重巴鲁
谢谢每个人,
我尝试了所有可能性,但我无法得到我想要的东西。我不打算打印转换为字符串的值。我想使用该值进行计算。如果我再次使用数字格式化器,当我从数字转换为浮动时,它给出了相同的问题。所以我只想要浮动值,但它应该是我在文本框中给出的任何不应该用任何值填充。这是我的要求。请帮帮我。
感谢&安培;问候 巴鲁
答案 0 :(得分:3)
这没关系。如果您使用40.7
,则无法保证获得double
。
如果您想输出40.7
,可以使用%.1f
或NSNumberFormatter
答案 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 ....
因此,如果你将这些数字用于输出,你应该使用一些舍入机制,即使是双值。