关于JAVA的精确度
Java
/*
*关于JAVA的精确度*
*书上云:float的精确度是7位,double的精确度为17位*
*摘自《BEGIN JAVA 2》JAVA入门经典 *
*但下面的程序却让我对此产生了怀疑 *
*/
public class Yasa{
public static void main(String arg[]){
/*测试十一分之一的结果*/
int m=1;
int n=11;
float o=(float)m/n;
double p=(double)m/n;
System.out.println("1/11 in float="+o+"/n"+"1/11 in double="+p);
/*测试十一分之十二的结果*/
int e=12;
int f=11;
float g=(float)e/f;
double h=(double)e/f;
System.out.println("12/11 in float="+g+"/n"+"12/11 in double="+h);
/*测试三分之一的结果*/
int a=1;
int b=3;
float c=(float)a/b;
double d=(double)a/b;
System.out.println("1/3 in float="+c+"/n"+"1/3 in double="+d);
/*测试三分之四的结果*/
int w=4;
int x=3;
float y=(float)w/x;
double z=(double)w/x;
System.out.println("4/3 in float="+y+"/n"+"4/3 in double="+z);
}
}
/*运行结果:*
*1/11 in float=0.09090909 为8位*
*1/11 in double=0.09090909090909091 为17位*
*12/11 in float=1.0909091 为7位*
*12/11 in double=1.0909090909090908 为16位*
*1/3 in float=0.33333334 为8位*
*1/3 in double=0.3333333333333333 为16位*
*4/3 in float=1.3333334 为7位*
*4/3 in double=1.3333333333333333 为16位*
*================================*
*运行结果尺度不一,这说明精确度不是基于10进制考虑的*
*/