Java 双精度的,不精确的

Java 双精度的,不精确的,java,double,precision,rounding,Java,Double,Precision,Rounding,我不知道如何克服进位的双精度问题,我尝试了大十进制,也许我做得不对 我不需要非常精确的结果,但我需要结果1.764。 提前感谢。这是因为您正在执行整数除法1,4和10被视为整数,因此1/4和1/10将是整数除法 将w1和w2更改为: java将以这种方式执行浮点除法,这是因为执行整数除法1、4和10被视为整数,因此1/4和1/10将是整数除法 将w1和w2更改为: 这样,java将执行浮点除法1/4和10/4是整数除法。它们的结果是一个int,然后被加宽为一个double。您需要的是双除法: d

我不知道如何克服进位的双精度问题,我尝试了大十进制,也许我做得不对

我不需要非常精确的结果,但我需要结果1.764。
提前感谢。

这是因为您正在执行整数除法1,4和10被视为整数,因此1/4和1/10将是整数除法

将w1和w2更改为:


java将以这种方式执行浮点除法,这是因为执行整数除法1、4和10被视为整数,因此1/4和1/10将是整数除法

将w1和w2更改为:

这样,java将执行浮点除法

1/4和10/4是整数除法。它们的结果是一个int,然后被加宽为一个double。您需要的是双除法:

double w1 = 1/4.0;
double w2 = 10/4.0;

1/4和10/4是整数除法。它们的结果是一个int,然后被加宽为一个double。您需要的是双除法:

double w1 = 1/4.0;
double w2 = 10/4.0;

设置刻度,然后使用以bigdecimal形式向下舍入

设置刻度,然后使用以bigdecimal形式向下舍入

我会读这个:我会读这个:
double w1 = 1.0 / 4
double w1 = 1 / 4.0
   BigDecimal bigdecimal=new BigDecimal(x);
   bigdecimal.setScale(2, BigDecimal.ROUND_HALF_DOWN);