【问题标题】:Rounding a number to 10^ form JAVA将数字四舍五入到 10^ 形式 JAVA
【发布时间】:2018-12-31 21:35:16
【问题描述】:

我有一个随机数,例如 35 127 3658 45782 等...我想将它们四舍五入为 10^ 形式,例如 10 100 1000 10000。我可以使用以下代码:

Math.pow(10, (int)(Math.log10(number)) + 1);

但是对于这样的基本操作,这段代码在我看来有点复杂和冗长。有没有更好的方法?

【问题讨论】:

  • 我实际上认为没有更简单的方法可以做到这一点。您可以使用字符串操作(如Math.pow(10, String.valueOf(number).length()))来计算位置的数量,但我认为这不会更优雅或更高效。
  • This 回答建议使用分而治之来计算地点数量可能会更快,但我并不认为这就是您要寻找的(称之为优雅解决方案将是一个延伸)
  • 我认为没有比这更优雅的方法了。但无论如何都是 ty
  • 我认为如果你想获得精度,你应该使用 BigDecimal。如果您想了解更多信息,请单击链接。 geeksforgeeks.org/bigdecimal-class-java

标签: java math random numbers


【解决方案1】:
float t =10,number;
//scan a value for "number"
while(number/t > 1)
{
t = t * 10;
}
if( (number/t) % 1 >= 0.5)
System.out.println(t);
else
System.out.println(t/10);

虽然它需要更多的行,但这很容易理解。

【讨论】:

  • 这会计算出错误的结果(例如,对于 214,您会得到 1000)并且对于 number = 1 也不起作用。此外,您可能希望为 t 使用 long 而不是 int,因为建议的输入数字超出了 int 范围。
  • 对不起,我把它四舍五入到下一个 10^ 数字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
  • 2015-11-12
  • 2011-03-21
  • 2013-08-31
  • 2017-05-03
相关资源
最近更新 更多