有人可以解释为什么尽管“ 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/

10-09 07:58