【问题标题】:What should i have to change in that function to get the 0.00 like effect?我应该在该功能中进行哪些更改才能获得 0.00 的效果?
【发布时间】:2011-12-04 11:49:16
【问题描述】:

为了得到小数点后两位小数,我使用了这个函数。

double roundTwoDecimals(double d) {             
    DecimalFormat twoDForm = new DecimalFormat("##.##");         
    return Double.valueOf(twoDForm.format(d)); 

但是虽然有一个像“5.50”这样的值,但使用这个函数我只得到了“5.5”。 而不是我想获得具有上述功能的 5.50 那么我应该改变什么??

请给我更新功能或任何更改输出的建议,如“0.00”。 谢谢。

【问题讨论】:

  • 你想在这里完成什么?您实际上是在尝试将数字四舍五入并返回双精度数吗?或者您只是想格式化数字以进行显示?您总是会从该方法返回一个未格式化的数字,因为doubles 不会保留您将数字格式化为的前导/尾随零。
  • 我只是想获得双精度值的小数值,但它应该是两位小数。我不打算四舍五入。好的。
  • @iDroid Explorer - 这里所有用户都说了同样的话。
  • 我只是想改进我的功能,以提供我想要的结果,以及我想要的 suknic 结果。

标签: java android android-layout numbers decimal


【解决方案1】:

您的示例适用于将数字四舍五入为 2 位数字。但是您会丢失尾随零,因为数字变量(double、float、...)不存储任何格式信息。

如果您想看到尾随零(如 5.50),您必须在输出时格式化数字:

DecimalFormat twoDForm = new DecimalFormat("#0.00");         
System.out.println(twoDForm.format(d));

【讨论】:

    【解决方案2】:

    DecimalFormat.format 返回一个字符串(不是 StringBuffer),然后您将获得 Double.valueOf(...)。然后返回双精度值,我假设在打印时使用它自己的 toString() 来显示。您需要对返回的双精度值运行 DecimalFormat.format。

    【讨论】:

    【解决方案3】:

    Use the format:

    new DecimalFormat("#0.00")
    

    当您使用# 时,零值显示为不存在。使用 0 将确保显示数字或 0。

    【讨论】:

    • 我已经用这个甲酸盐改变了功能,但结果还是一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2022-01-03
    • 2018-02-20
    • 2019-07-12
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多