java - double 被四舍五入而不精确

标签 java double precision rounding

double x = 0;
double P = 0.327; //P is a actually function that return double and change all the time
double w1 = 1/4; //prints 0 (w1 and w2 are same as P)
double w2= 10/4; //prints 2
x=x+P*w1+(1-P)*w2; 
System.out.println(x); // prints 1.346 and the real result is 1.76425

我不知道如何克服四舍五入的 double 问题,我尝试了 BigDecimal,也许我做的不对..

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

最佳答案

1/410/4 是整数除法。他们的结果是一个整数,然后扩大到一个 double 。你想要的是双师:

double w1 = 1.0 / 4

double w1 = 1 / 4.0

关于java - double 被四舍五入而不精确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031587/

相关文章:

ruby - 在 Ruby 的 BigDecimal 中是否使用 String 或 Integer

java - 我应该如何构造这个 while 循环? (JAVA)

java - Amqp 客户端未连接到 activemq 服务器。

xcode - 将 Double 打印为 Int - 如果不是 Double 值

java - 将货币值存储为 Doubles 但使用 BigDecimal 计算值

math - float 学坏了吗?

c - exp 函数在 Mac 和 Linux 上的结果略有不同

java - Camel - 使用 end()

java - 创建内部类并使用它们(了解一些代码)

java - 在双链表中插入新元素