为啥 IsNumeric("1.23D45") 返回 True?
Posted
技术标签:
【中文标题】为啥 IsNumeric("1.23D45") 返回 True?【英文标题】:Why does IsNumeric("1.23D45") return True?为什么 IsNumeric("1.23D45") 返回 True? 【发布时间】:2016-04-20 04:35:23 【问题描述】:在很长一段时间里,我认为IsNumeric("1.23E45")
返回了True
,因为“E”代表科学记数法,使得 1.23E45 成为 1.23x1045。
最近我注意到IsNumeric("1.23D34")
也返回了True
,我不知道为什么。
D
和 E
产生相同的结果:
?val("1.23d45")
1.23E+45
?val("1.23e45")
1.23E+45
怎么会?
【问题讨论】:
【参考方案1】:这出现在chat
根据Wikipedia...
FORTRAN 也使用“D”来表示双精度数。
“UH Mānoa 数学 » Fortran 第 3 课:格式、书写等”。 Math.hawaii.edu。 2012-02-12。检索于 2012 年 3 月 6 日。
VBA 仍然有许多 BASIC 祖先的痕迹(行号、GoSub..Return
、Rem
等) - 恰好 BASIC 的根源在于... FORTRAN。
因此,科学记数法的“D”显然只不过是过去的爆炸。
底线,避免混淆维护您的代码的人,并坚持使用“E”(或“e”)。但要知道,如果您需要将一些 FORTRAN 代码移植到 ...VBA,也支持“D”(或“d”)。
【讨论】:
好故事。因此,OP 必须检查是否出现“D”字符以明确说明单元格内容是数字 确实是好故事,我从未注意到这种行为,完全无法解释以上是关于为啥 IsNumeric("1.23D45") 返回 True?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 isnumeric isdigit 和 isdecimal False 为 1.5?
Windows 8/Windows 2012 中的 VB6“IsNumeric()”行为
如何在访问中查询“where isNumeric(col), and col > 0”