转换十进制(小数)值java中的double值

时间:2014-06-11 09:35:48

标签: java double decimalformat

我的代码如下:

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(或其他内容)

5 个答案:

答案 0 :(得分:3)

1234567981000000int个文字,因此除以它们将使用整数运算,并生成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);