gpt4 book ai didi

android - 从 String 解析浮点值时不正确,double 有效,为什么?

转载 作者:行者123 更新时间:2023-11-29 17:23:28 25 4
gpt4 key购买 nike

我在 EditText 中输入了 179.9。当我检索它时,如果它存储为 float,则该值是不同的。

final EditText valueInput = mEntryDialogView.getValueInput();
final CharSequence input = valueInput.getText();
final String inputAsString = input.toString().trim();
final float asFloat = Float.valueOf(inputAsString); //179.899994
final double asDouble = Double.valueOf(inputAsString); //179.9

这里有些可疑,谁能向我解释为什么浮点值不正确?即使这样,如果我将上面的 double 值转换为 float,它也会不正确。

此外,是否可以采取任何措施以等同于实际输入值的方式将值检索为 float ?

最佳答案

floatdouble 不允许精确存储十进制数,因为 float 以二进制形式(尾数 + 指数)存储,而不是列表十进制数字,两者之间没有完全匹配。您总会失去一些精度,即使系统会尝试四舍五入显示的值来弥补这一点。

Float 的最大精度大约在 6 到 9 位小数之间。

如果您想在不损失精度的情况下存储小数值,例如金额,请使用 BigDecimalString

金额也可以存储为表示美分的整数值,但请确保您使用 BigDecimal 或一些 String 操作来进行转换而不会丢失精度。

关于android - 从 String 解析浮点值时不正确,double 有效,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35673034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com