有个JAVA小程序请教

来源:百度知道 编辑:UC知道 时间:2024/06/28 17:39:38
class tan2{
public static void main(String arg[]){
float a;
float b;
double c;
double d;
a=4.0/3;
b=4.0%3;
c=4.0/3;
d=4.0%3;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
}
}
这个程序在编译时会出现损失精度......但把float改为int的话问题就解决
short a;
short b;
int c;
int d;就能编译出来
float a;
float b;
double c;
double d就不能........请大家给我讲解下.....谢谢

jvm默认程序中出现的整数为int型
如 4,1,6666
而小数默认为double
如:1.20;
这就是问题所在了
你的a为float 而4.0默认为double,3默认为int
double与int进行运算,结果永远为double
而您的a是float就精度丢失了

您可以在4.0后面加上大写或小写的F/f问题就解决了

自动类型转换见下表
数据大小排序
double>float>long>int=char>sort>byte
当表达式中有double时,计算结果永远是double
当表达式中有float无double时,计算结果永远是float。
当表达式中有long无float和double时,计算结果永远是long;
当表达式中有int无long和float和double时,计算结果永远是int;

当表达式中无int无long和float和double时,计算结果也永远是int;