我遇到了这个问题:
float rate= (115/100);
当我这样做时:
System.out.println(rate);
它给了我1.0 什么......问题是什么?
答案 0 :(得分:9)
115和100都是整数,因此将返回一个整数。
尝试这样做:
float rate = (115f / 100f);
答案 1 :(得分:3)
您正在执行整数除法(提供整数结果),然后将其存储在浮点数中。
您需要在操作中至少使用一个浮点数才能使结果成为正确的类型:
float rate = 115f / 100;
答案 2 :(得分:2)
float rate= (115/100);
以下事项:
1)对115
执行100
的整数除法,得到值为1
2)将步骤1)的结果投射到浮子上。这产生值1.0
你想要的是这个:
float rate = 115.0/100;
或者更一般地说,你想要将你的分区中的一个分成一个浮点数,无论是通过施放(浮动)115/100还是通过将小数点附加到两个部分之一或者通过这样做{{ 1}}完全取决于你并产生相同的结果。
答案 3 :(得分:2)
为了使用整数执行浮点运算,您需要将至少一个操作数强制转换为float
。
示例:
int a = 115;
int b = 100;
float rate = ((float)a)/b;
答案 4 :(得分:1)
使用float rate= (float)(115.0/100);
代替
答案 5 :(得分:1)
放float rate = 115f / 100;
答案 6 :(得分:0)
你遇到的问题是你的被除数和除数被声明为整数类型。
在数学中,只用remainder除以两个整数结果。这就是您分配给rate
变量的内容。
所以要得到你想象的结果,剩下的是分数(有理数)。您的股息或除数必须以精确的类型声明。
精确定位两个已知类型float
(Floating point)和double
(Double precision)。
默认情况下,用Java代码编写的所有数字(纯粹主义者的整数文字)都是int
(整数)类型。要更改它,您需要告诉编译器您要声明的数字应该以不同的类型表示。为此,您需要将后缀附加到整数文字。
float - f或F;
110f;
double - d或D
110D;
请注意,当您想要使用double,键入时,您也可以通过向文字添加小数分隔符来声明它:
double d = 2.;
要么
double d = 2.0;
我鼓励你使用double类型而不是float类型。双色型更适合大多数现代应用。使用float
可能会导致意外结果,因为accuracy problem单点计算对结果的影响更大。很好地阅读这个“What Every Computer Scientist Should Know About Floating-Point Arithmetic”。
此外,在当前的CPU架构中,float和double都具有相同的性能特征。所以不需要牺牲准确性。
关于浮点类型的最后一点是,当我们编写财务应用程序时,应该使用它们。要在此问题上获得有效结果,您应始终使用[BigDecimal]