打印字符串中的意外数字格式

时间:2014-12-19 12:16:40

标签: java printf number-formatting

我错误地在我的JAVA代码中输入了以下行,并获得了惊人的输出。任何人都可以帮助我了解它是如何发生的。

代码: System.out.printf(“值:”+ 0.40 + 010 + 0.60);

输出: 价值:0.480.6

2 个答案:

答案 0 :(得分:3)

你看到了几件事:

  1. 您正在将数字作为字符串添加到值字符串中。
  2. 您正在编写八进制数字010),因为您使用0开始字面数字,这实际上意味着小数点为8
  3. 从文字中删除尾随的十进制零。 (0.40 - > 0.4
  4. 因此,在几个步骤中重写代码会产生:

    1. "Value :"+0.40+010+0.60
    2. "Value :0.4"+010+0.60
    3. "Value :0.4"+8+0.60
    4. "Value :0.48"+0.60
    5. "Value :0.480.6"

答案 1 :(得分:2)

你想象的是正在加入,但事实并非如此。这些是字符串。

第一个值是0.4。

第二个值是010,表示八进制。这意味着十进制为8。

第三个值是0.6

你没有说出你期望看到的东西。如果你真的想要添加,我建议用括号括起来进行添加。您仍然需要确定该八进制值是故意的还是错误的。