Java - int/long,float/double

mk1*_*k12 3 java floating-point double primitive-types long-integer

我明白"2.5"自动是双倍的,为了使它成为一个浮点数,我需要做"2.5F"(或者F应该是小写?),并且我应该使用浮点数,比方说,如果我有一个常数只需要2个小数位(如安大略省PST税的"0.08F"),但我不确定"12"是int还是long,但我知道"12L"是长的,但是"长" l = 12"和"long l = 12L"似乎编译成相同的东西,如果我想要最大的非浮点精度,我使用long,如果我知道我不需要超出int的限制,则使用int.

如果那里有不对的东西,请纠正我,并回答我的问题.

Yis*_*hai 14

12作为java中的常量是一个int.

long l = 12编译的原因是它会自动扩展为long.

编辑:关于你的评论,自动扩展没有任何问题,使用任何使你的代码更清晰的东西,但只是要知道当你对原语进行数学运算时发生了什么.例如:

int i = 1213;
long l = 112321321L * i;
Run Code Online (Sandbox Code Playgroud)

如果您没有将第一个数字显式地设置为long,则long将具有非常不同的值,因为Java会将其视为整数数学,并导致溢出.

  • 自动扩展没有任何问题,使用任何使您的代码更清晰的东西. (2认同)

akf*_*akf 7

如果在声明floats 时使用小写或大写,则没有任何区别.

...像安大略省PST税的"0.08F"

如果您使用这些字段作为货币,则应考虑使用BigDecimal. 有关更多详细信息,请参阅 Sun的此说明及其相关链接.

  • +1.请不要使用货币的浮点数,EVER (6认同)