首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么NumberUtils.isNumber()不能正常工作?

为什么NumberUtils.isNumber()不能正常工作?
EN

Stack Overflow用户
提问于 2020-02-19 21:24:35
回答 3查看 2.8K关注 0票数 1

当我检查条件08或09或010及以上时,在org.apache.commons.lang3.math.NumberUtils.isNumber("08")中以0开头

EN

回答 3

Stack Overflow用户

发布于 2020-02-19 21:28:52

方法isNumber已弃用:

isNumber(String str)已弃用。此功能将在Lang 4.0中删除,请改用isCreatable(字符串

使用isCreatable实现上述目的。

您检查ocatl类型值的上述要求将通过isCreatable方法检测到:

代码语言:javascript
运行
复制
org.apache.commons.lang3.math.NumberUtils.isCreatable("08") // this will return true.

此方法检查字符串是否为有效的Java编号。

有效数字包括用0x或0X限定符标记的十六进制数字、八进制数字、科学记数法和用类型限定符标记的数字(例如123L)。

以零开头的非十六进制字符串被视为八进制值。因此,字符串09将返回false,因为9不是有效的八进制值。但是,以0开头的数字。都被视为小数。

参考官方docs

票数 4
EN

Stack Overflow用户

发布于 2020-02-19 21:26:33

以零开头的非十六进制字符串被视为八进制值。因此,字符串"09“将返回false,因为"9”不是有效的八进制值。

参考官方docs

票数 2
EN

Stack Overflow用户

发布于 2020-02-19 21:32:59

https://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/math/NumberUtils.html#isCreatable-java.lang.String-

请改用isCreatable。我假设isNumber的工作方式基本上是一样的。

“以零开头的非十六进制字符串被视为八进制值。”因此,字符串09将返回false,因为9不是有效的八进制值。但是,以0开头的数字。都被视为小数。“

00-07是数字。08--010不会被解释为八进制数,但这是一个库问题。

请参阅What do numbers starting with 0 mean in python?

如果有疑问,请阅读手册。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60301411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档