java的long类型与float相加出错问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的long类型与float相加出错问题相关的知识,希望对你有一定的参考价值。

public class CodeFour
public static void main(String[] args)
long a=300000000L;
float b=1.23f;
long c=123;
b=a+b+c;
System.out.println(b);


代码如上

打印结果为3.00000128E8,甚为不解,为什么是128,而不是124,求高手指教

首先float只能精确到小数点后第7位,后面的就不确定了。按照上面的,结果是300000124.23。float会用E来表示,也就是3.0000012(4)E8。而4正好在第8位,所以是不精确的,不确定的。如果你是30000000L,那么结果就是3.0000124E7了。 参考技术A 精度都不对啊,你这样肯定是不行的,在程序中是不允许double float,long来直接进行加减乘除的,直接用BigDecimal来进行计算啊 参考技术B java是大类型不会自动转换为小类型,但是小类型可以往大类型转换

你这种是不是就已经给截断了把结果,输出来的根本就不对啊

这是把结果按照浮点型的给截取后转换为的结果

两个byte型数据加在一起时,返回int型结果,那两个int相加呢?

两个int型数据相加可能等于long型

不一定吧,这要看你的机子设定类型了!如果你的机子设定的是int类型,那么返回的值也将是int类型。当然你的机子设定的类型是long类型,那么返回的值也将是long类型的! 参考技术A 2个 int 加还是int 参考技术B -_-!
两个byte型数据相加,返回的还是byte。
两个int类型的数据相加 返回的还是int
byte类型和int类型,运算返回的int的。
long类型和float类型运算,返回float类型的
取精准度高的类型
参考技术C 这个要看编译器。在TC里面byte和int等价。

以上是关于java的long类型与float相加出错问题的主要内容,如果未能解决你的问题,请参考以下文章

在Java中为long和float原始类型赋值[重复]

java 方法返回值类型 Long与long

基本数据类型的一个小知识点

两个byte型数据加在一起时,返回int型结果,那两个int相加呢?

Java语言基础

使用 Java Long 包装器与原始 long 相加数字