我需要一些帮助,这是我所指的代码:
int myId;
my Id = 20113275l
int numLet;
numLet = 6;
double doubleResult;
doubleResult = 10000 + (80 + ((myId - 123456) / ((numLet + 20)*(numLet + 20)) ));
System.out.println("Expression 5: " + doubleResult);
根据我的计算器,答案应该是39650.7,但是当我运行该程序时,它给了我39650.0
有谁可以解释这里发生了什么?
答案 0 :(得分:0)
在这种情况下,您应该仅使用double
值来获得想要的结果:
int myId;
myId = 20113275;
int numLet;
变为
double myId = 20113275.0;
double numLet;
这是输出:
Expression 5: 39650.73816568047
答案 1 :(得分:0)
您正在进行整数除法,因为您的参数都不是double
。除以两个整数的结果是整数。您的类型为int
(在最后添加l
促销long
)。无论如何,将其中一个术语投射到double
,您将得到您期望的结果。对于一个十进制精度,您可以使用格式化输出。像,
public static void main(String[] args) {
int myId = 20113275; // <--- Not a long.
int numLet = 6;
double doubleResult = 10000 + //
(80 + ((myId - 123456) / (double) ((numLet + 20) * (numLet + 20))));
System.out.printf("Expression 5: %.1f%n", doubleResult);
}
输出(按照您的要求)
Expression 5: 39650.7