使用Math.round舍入到最接近的十分之一?

时间:2013-10-19 01:11:49

标签: java math

我只想问一个关于Math.round方法的快速问题。我正在尝试计算两个整数的分数为双精度。等式如下:199/39。当我这样做时,它返回5.0作为答案。我知道答案应该是5.1,还有更多的小数。我被告知使用Math.round方法将它四舍五入到最接近的十分之一,但我不知道如何实现这一点。我应该将该double变量更改为int并使其成为int / int = int吗?我不确定Math.round如何工作以获得5.1,因为我读过它只会舍入到最接近的整数而不是小数点。任何帮助都会很棒。

P.S这是家庭作业,但我只是因为我在笔记,幻灯片或书中找不到有关如何使用Math.round的信息。

4 个答案:

答案 0 :(得分:1)

您无需Math.round()即可获得结果小数值。如果您将int除以int,您将获得int。如果需要小数,则将double强制转换为其中一个输入值。然后你会得到一个double

(double) 199 / 39
199.0 / 39

// both return
5.102564102564102

答案 1 :(得分:1)

  

我知道答案应该是5.1,还有更多的小数。

不应该使用整数除法。 5是对的。

如果需要浮点答案,则需要提供至少一个浮点操作数,例如: 199/39.0

然后,您可以使用System.printf()DecimalFormat.

将您要格式化的内容格式化为您喜欢的多个或几个小数位

你不能将浮点值本身舍入到小数位,因为它没有小数位,它有二进制位。

请参阅this question进行全面讨论,特别是我的答案。

答案 2 :(得分:0)

您的具体答案:

roundedNumber = (double)Math.round(unRoundedNumber * 10) / 10;

一般来说,等式是:

roundedNumber = 
(double)Math.round(unRoundedNumber * Math.pow(10, digitsToRoundTo)) 
/ Math.pow(10, digitsToRoundTo);

答案 3 :(得分:0)

感谢所有帮助。看完你的帖子后再看一下我最后做了比率=((双)199/39)然后继续 比=(双)Math.round(比* 10)/ 10。这样做让我得到5.1我正在寻找。