gpt4 book ai didi

java - 如何处理处理指数值时出现 E 尾随无指数值的异常

转载 作者:行者123 更新时间:2023-11-30 04:33:13 27 4
gpt4 key购买 nike

这是我在这个论坛上提出的第一个问题,所以如果问题是新手,请指教。

我通过EditText接收用户输入,因此它是一个字符序列/字符串。然后我创建了 BigDecimal 来保存该值。它也可以优雅地处理指数,没有任何麻烦。但问题是,当用户输入像 1.1E+ 这样的值(没有任何尾随指数值)时,这段代码中的代码会崩溃。但当输入像这样 1.1E+2

时它会起作用
EditText edit_text_left;
Editable editable_val_text;
....
editable_val_text = edit_text_left.getText();
BigDecimal val = new BigDecimal((editable_val_text.toString().trim())); // crash happens here

如何处理这个问题?

更多信息:您可以在 Google 单位转换应用中尝试此操作,选择“数字存储:拍字节到比特的转换”。然后输入 9(拍字节),它将在位部分显示 8.106e+16。现在尝试将 8.106e+16 编辑为 8.106e+,它仍然可以工作。我只想要类似的处理。

最佳答案

IMO,您应该做的是捕获异常(在封闭的 try-catch 语句中)并告诉用户他们提供了无效的数字。

如果您想处理“科学”格式的非标准版本,您可能需要实现自己的数字解析器/转换器。您可以通过从 BigDecimal 类中获取标准解析代码,并将其转换为可以理解非标准格式的静态帮助器方法来实现此目的。

或者,您可以尝试创建与非标准形式的字符串匹配的正则表达式,并使用它将字符串更正为 BigDecimal 可接受的形式。

但坦率地说,我不会那样做。如果用户能够理解科学格式,他们也应该能够获得正确的语法......

关于java - 如何处理处理指数值时出现 E 尾随无指数值的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119190/

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