我的代码如下:
Double a = new Double((123456798/1000000)); //123456798 this value comes from client side as a `int`
DecimalFormat df = new DecimalFormat("###.###");
log.info("a :"+a+" df "+df.format(a.doubleValue()));
输出:
a :123.0 df 123
//i want output like this, a :123.xxx fd 123.xxx
请帮助
更新
123456798此值来自客户端int
所以我无法将其作为123456798.0(或其他内容)
答案 0 :(得分:3)
123456798
和1000000
是int
个文字,因此除以它们将使用整数运算,并生成123
。
相反,您可以使用浮点文字来使用浮点运算:
Double a = new Double((123456798.0/1000000.0));
DecimalFormat df = new DecimalFormat("###.###");
log.info("a :"+a+" df "+df.format(a.doubleValue()));
答案 1 :(得分:2)
除法中的任何一个值都应该是float或double。
Double a = new Double((123456798.0/1000000));
或
Double a = new Double((123456798/1000000.0));
如果您在变量中获得这些值,那么multiply it with 1.0
像
Double a = new Double((variable*1.0/1000000));
答案 2 :(得分:1)
就这样说吧
Double a = new Double((123456798.0/1000000.0)); // <- note ".0"
错误行为的原因是整数除法:
123456798/1000000
是整数值,而
123456798.0/1000000.0
是浮点一(双)
答案 3 :(得分:1)
Double a = new Double((123456798/1000000));
你在这里进行整数除法。使其中一个常量为double
,以便完成浮点除法。另外,你为什么要使用Double
?最好使用原始类型double
。
double a = 123456798.0 / 1000000;
或简单地说,因为它们是常数:
double a = 123.456789;
答案 4 :(得分:0)
您执行整数除法,这就是a
不正确的原因:
Double a = new Double(123456798.0/1000000);