JAVA中一个float除以一个int变量,得到的结果精确到几位?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中一个float除以一个int变量,得到的结果精确到几位?相关的知识,希望对你有一定的参考价值。

我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。

1 数据类型转换的种类\r
java数据类型的转换一般分三种,分别是:
(1). 简单数据类型之间的转换
(2). 字符串与其它数据类型的转换
(3). 其它实用数据类型转换
下面我们对这三种类型转换分别进行论述。
2 简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为
[center](byte,short,char)--int--long--float--double[/center]
简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
●包装类过渡类型能够转换

2.1自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:

byte b;int i=b;long l=b;float f=b;double d=b;

如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如\r

char c='c'; int i=c; System.out.println("output:"+i);

输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

short i=99;char c=(char)i;System.out.println("output:"+c);

输出:output:c;
但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。

2.2强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:

int i=99;byte b=(byte)i;char c=(char)i;float f=(float)i;

可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。

2.3包装类过渡类型转换
在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。
在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。
一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:
例1,当希望把float型转换为double型时:

float f1=100.00f; Float F1=new float(f1); Double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

当希望把double型转换为int型时:

double d1=100.00; Double D1=new Double(d1); int i1=D1.intValue();

当希望把int型转换为double型时,自动转换:

int i1=200; double d1=i1;

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

3 字符串型与其它数据类型的转换
通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:

int i1=10;float f1=3.14f;double d1=3.1415926;Integer I1=new Integer(i1);//生成Integer类\rFloat F1=new Float(f1); //生成Float类\rDouble D1=new Double(d1); //生成Double类\r//分别调用包装类的toString()方法转换为字符串String si1=I1.toString();String sf1=F1.toString();String sd1=D1.toString();Sysytem.out.println("si1"+si1);Sysytem.out.println("sf1"+sf1);Sysytem.out.println("sd1"+sd1);
参考技术A 这个问题很奇怪,所以花时间写了个程序测试了一下:
public class Test
public static void main(String[] args)
System.out.println(Math.PI/2);


得到结果:
1.5707963267948966
得到结论:
如果结果是无理数或者小数位数大于16,那么取16位
如果结果不是无理数并且小数位数小于或者等于16位,那么最后的结果的精确度就是结果本身的小数位!本回答被提问者采纳
参考技术B 按flaot的精度来计算的。至于flaot的精度是多少么,只有看JAVA对flaot的介绍了。对好不要用flaot计算精度有问题,建议用那个双精度类型,double 参考技术C 当然试按float计算了
int Integer 4个字节 long Long 8个字节 float Float 4个字节 double Double 8个字节 byte Byte...
按精确度高的算

[疯狂Java讲义] 数据类型

浮点数必须包含一个小数点。

float型数值后面必须紧跟一个“F/f”,否则默认为double类型。

 

三个特殊浮点数:

POSITIVE_INFINITY:正无穷大

NEGATIVE_INIFINITY:负无穷大

NaN:非数

(只有浮点数除以0才能得到无穷大,整型除以0会抛出一个异常)

 

Java没有强制制定boolean类型变量所占用的空间大小,

虽然boolean类型只要1位,但是计算机分配内存时最小内存单元时1字节

 

自动类型转换:表数范围小的可以直接赋值给表数范围大的

强制类型转换:表数范围大的需要强转赋值给表数范围小的

 

当程序第一次使用某个字符串字面量时,Java会使用常量池来缓存它。

下次需要用到它时,直接从常量池中找到它。(即字面量相同的引用相等)

(常量池在编译期间被确定,保存在.class文件中)

(String类型是不可变量,一旦创造出来就无法改变)

 

取余运算允许操作数是浮点数,也允许第二个操作数是0 or 0.0,结果为NaN。

>>>无符号右移运算符。

boolean型变量的值不能和其他任意类型变量的值进行==比较。

 

 

int[]就是一种数据类型(引用类型),其定义,类型转换等和其他普通类型没有区别。

 

 

 

不可能只为数组分配内存空间而不赋值。(至少系统自己会为数组赋值)

 

数组名只是一个引用,可以指向任何有效的内存。

 

数组名放在栈内存中,数组元素放在堆内存中。

 

每个方法执行的时候都会建立自己的内存栈,方法执行结束后内存栈被销毁。

 

程序中的对象放在堆中(因为对象的创建成本大),可以反复利用。

 

 

 

可以将数组赋值为null,就切断了数组引用变量和实际数组之间的联系,让后者成为垃圾被回收。

 

 

 

parallelSort()方法对数组进行排序,常用于多CPU机器。

 

以上是关于JAVA中一个float除以一个int变量,得到的结果精确到几位?的主要内容,如果未能解决你的问题,请参考以下文章

int型除以int型

JAVA里 一个int 数 除以 另一个 int数,比如 101/2 。程序里返回值为

在java中的double和float类型数据相除为啥可以除以零

无穷小怎么表示

[疯狂Java讲义] 数据类型

两个int数据相除怎么得到double型数据