【问题标题】:- Rounding a double up & removing the numbers after a decimal point -- 四舍五入并删除小数点后的数字 -
【发布时间】:2014-06-11 20:40:14
【问题描述】:

有人能告诉我如何舍入一个双精度数,然后删除小数点后的数字 - 然后将此数字转换为字符串吗?

例如从双精度值 55.6666666666667 开始 - 将其向上舍入为双精度值 56.0000000000 -

或以 55.333333333333 开头 - 向下舍入到双精度值 55.0000000000 -

& 然后删除小数点和尾随零 - 转换为字符串。

谢谢。

【问题讨论】:

  • 你使用了“向上取整”这个词,所以澄清一下,如果双精度值是 55.33333 会发生什么;还是应该向上舍入到 56,还是向下舍入到 55?
  • 确实,我很累 - 感谢您的关注!向上取整和向下取整将是理想的 - 因为它可以获得百分比/等级。
  • 查看Math.ceil()并将返回值转换为int。
  • 我将编辑原始问题。

标签: java math double tostring rounding


【解决方案1】:

假设您实际上并不想保存舍入值,而只是想将其视为一个字符串,这应该可以满足您的所有需求,其中xdouble

String s = String.format("%.0f", x);

【讨论】:

    【解决方案2】:

    使用Math.round() 函数。您可以将其转换为int 以消除小数位,或者您可以在转换前使用Math.floor()Math.ceil() 将其向下或向上舍入。

    【讨论】:

      【解决方案3】:

      将值四舍五入到最接近的整数的最佳方法是:

      int x = (int)Math.round(55.6666666666667);
      

      x 将是 56。您还可以使用 Math.ceil()Math.floor() 分别向上或向下舍入。最后要使x 成为字符串,请使用String.valueOf()。像这样:

      String xString = String.valueOf(x);
      

      如果您想在一行中完成所有操作:

      String xString = String.valueOf(Math.round(55.6666666666667));
      

      您可以阅读有关Mathhere 和String 类here 的更多信息。

      【讨论】:

      • 糟糕,当我发布我的答案时错过了这个。 +1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多