Java 这些数字是什么?它们的类型是什么?

Java 这些数字是什么?它们的类型是什么?,java,double,literals,primitive-types,Java,Double,Literals,Primitive Types,好的,我这里有几个值: 'F', 0xf, 070, 70L, 77e-1f, 7.7f, 7.77e1, 77.7 我知道'F'是字符,70L的类型是long。另外,我知道0xf是十六进制(对吗?),而070是八进制。但其他的数字是多少?为什么77.7double而不是float呢?这是你唯一没有解释的两个: 7.7f f的意思是浮动-,它表示这不应该是双精度的,而是浮动的!您可以看到,默认情况下,任何“浮点”字面值都自动为类型double,您需要“f”来强制执行“较小”的浮点类型 及 正

好的,我这里有几个值:

'F', 0xf, 070, 70L, 77e-1f, 7.7f, 7.77e1, 77.7

我知道
'F'
字符
70L
的类型是
long
。另外,我知道
0xf
是十六进制(对吗?),而
070
是八进制。但其他的数字是多少?为什么
77.7
double
而不是
float
呢?

这是你唯一没有解释的两个:

7.7f
f的意思是浮动-,它表示这不应该是双精度的,而是浮动的!您可以看到,默认情况下,任何“浮点”字面值都自动为类型double,您需要“f”来强制执行“较小”的浮点类型

正在使用科学符号,请参见示例以了解更多解释

为什么他妈的是77.7倍而不是浮动

Float数字必须在末尾用
f
表示,但是double数字不需要在末尾用
d
表示

77e-1f
是一个浮点数
77
10^-1
的幂相等,因此它等于
7.7


与Java中的
7.77e1
=
77.7

相同,默认情况下,包含点的数字文本的类型为double。如果你想要一个浮动,你需要附加
f


包含
e
的数字是指数或科学符号,但我不打算在这里解释它,因为它与编程无关。

您要找的是

  • 关于
    77.7
如果浮点文本以字母F结尾,则其类型为float 或f;否则,它的类型是double,并且可以选择以 字母D或D

  • 0xf
    不是
    hex
    类型。没有类型
    hex
    。它只是一个十六进制的
    int
    wirtten。就像
    070
    是一个用八进制写成的
    int

  • 文字
    77e-1f
    显然是一个浮点数,因为它以
    f
    结尾

  • e
    指数,即
    77e-1f
    实际上是
    77*10^(-1)
    7.7
    。文字
    7.77e1
    是双精度的,原因相同
    77.7
    是双精度的,只是
    7.77e1
    等于
    7.77*10^1
    =
    77.7

77e-1表示:
77
是数字乘法器,
e
(或
e
)表示
基数10
,而
-1
表示指数

因此,结果是
77
by(
10
-1
供电),或
77
.1
供电,即。e
7.7


此符号的名称为科学对数,适用于非常大或非常小的数字,例如。g
100万=1.000.000
可以表示为
1e6

为什么他妈的要包括你已经知道的东西?:)“为什么他妈的是77.7倍而不是浮动呢?”研究不是你的强项,对吧。至少你得到了另一个坏用户的“同情投票”:我不明白。那么77.7和77.7不一样吗?为什么链接到JLS?也解释了这一点,甚至对Java不熟悉的人也有可能理解它……但我们谈论的是Java。在Java中,字面值070是八进制。一直都是。谢谢,我把那部分去掉了。7.77e1=7 x 10的幂1=77.7,不是0.777。你把它改成了7.77,这仍然是错误的。。。7.77e1=77.7.真是个错误,再次感谢。好的,非常感谢:)@Pshemo你当然是对的。固定的。
77e-1f