有人可以解释为什么尽管“ 0.2f”将其定义为浮点型,但“ c”必须为双精度型吗?
我以为'f'代表浮点数。
抱歉,这是一个愚蠢的问题,但我想知道。
a = 4294967296L;
b = 'n';
c = (3.1415926 * 0.2f) * a;
=>
long a = 4294967296L;
char b = 'n';
float c = (3.1415926 * 0.2f) * a;
将'c'更改为double =>
long a = 4294967296L;
char b = 'n';
double c = (3.1415926 * 0.2f) * a;
最佳答案
这是因为3.1415926
是一个双常量。因此,表达式(3.1415926 * 0.2f)
给出一个双精度结果,当乘以long时仍为双精度。
顺便说一句。如果要乘以pi,最好使用Math.PI
。
关于java - Java将long和float数相乘,结果是哪种数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33024472/