如果Java / Python对其变量区分大小写,那么具有指数值的浮点数则不是,为什么会这样



python(或Java)语言中的变量区分大小写。话虽如此,

当我打印时

>>> a=3.14159
>>> b=999999999999999999999
>>> print(a*b)
3.14159e+21
我可以看到"e+"(

指数)值是小写的,如果我使用结果"E+"(大写),那么看不到任何错误/意外结果。?

注意:我已经搜索了几个链接来寻找答案,我发现这些编程语言是为支持基于 unix 的操作系统而编写的,但是,在这个指数级场景中,UNIX OS 支持不区分大小写。

有兴趣知道这些程序是否旨在通过解释器理解操作系统,那么这些解释器不是在所有地方(或适用的地方)自定义这些敏感性问题吗?

Java和Python对标识符(即方法名称,变量名称,类名称等)区分大小写。

3.14159e+21不是标识符,因此"标识符区分大小写"的规则不适用。它是一个浮点文字。

在 Java 语言规范第 3.10.5 节浮点文本中,指定了浮点文本的语法:

FloatingPointLiteral:
DecimalFloatingPointLiteral 
HexadecimalFloatingPointLiteral
DecimalFloatingPointLiteral:
Digits . [Digits] [ExponentPart] [FloatTypeSuffix] Digits [ExponentPart] [FloatTypeSuffix] 
Digits ExponentPart [FloatTypeSuffix] 
Digits [ExponentPart] FloatTypeSuffix
ExponentPart:
ExponentIndicator SignedInteger
ExponentIndicator: <---- Look at this part!
(one of) 
e E
SignedInteger:
[Sign] Digits
Sign:
(one of) 
+ -
FloatTypeSuffix:
(one of) 
f F d D

看到这个块了吗?

ExponentIndicator:
(one of) 
e E

这就是浮点文字"不区分大小写"的原因。

他们为什么要这样设计?你必须问他们真正的答案。我的猜测是,这两种格式(带有"e"或"E")在当时已经被广泛接受。

最新更新