- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我在这个论坛上提出的第一个问题,所以如果问题是新手,请指教。
我通过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/
我有兴趣报告多个时间序列列中超过阈值的日期。该索引是与时间序列数据相关的站点位置相关的日期时间值和列名称。我需要一个类似于“idxmax”的函数,但要返回时间序列中首次超过阈值的索引。这似乎是一项简单
我是一名优秀的程序员,十分优秀!