Android - 保留两位小数

172

可能是重复问题:
将双精度浮点数保留两位小数

我知道有很多关于如何四舍五入这种数字的例子。 但是,有人能向我展示如何将双精度浮点数四舍五入,以便获得可以显示为字符串并始终具有2个小数位的值吗?


3
这个链接是Java DecimalFormat类的官方文档,可帮助你更好地理解该类。 - STT LCU
2
double myNum = 34.393893 DecimalFormat df = new DecimalFormat("#.##") String twoDigitNum = df.format(myNum) - koopaking3
2个回答

534
你可以使用 String.format("%.2f", d),你的double值将会被自动四舍五入。

9
好的,这是我要找的内容,但应该是:String.format("%.2f", d),谢谢。 - goodm
19
更安全的方法是使用 DecimalFormat。使用您的方法存在一种可能,即在某些国家/地区格式化可能会出错,作为开发人员,您可能永远不会注意到这一点,也可能不愿意进行检查。 更好的方法是这样做: DecimalFormat percentageFormat = new DecimalFormat("00.00"); String finalPercentage = percentageFormat.format(percentage); - Yenthe
24
注意本地化设置。在加拿大的法语环境中,会使用逗号代替小数点。可以像这样强制指定本地化设置(示例):`String.format(Locale.CANADA, "%.2f", d)` - level32
1
@usman 最初的问题是关于将数字转换为具有固定精度的字符串,因此这并没有什么问题。 - OleGG
9
如果您在某些地区出现混乱的情况,那么这将是最佳解决方案:Double rounded = new BigDecimal(myDouble).setScale(2, RoundingMode.HALF_UP).doubleValue(); - Bilal Ahmed
显示剩余3条评论

13

一个简单的方法:

    Double d;
    Int i;
    D+=0.005;
    i=d*100;
    Double b = i/100;
    String s = b.toString():

16
这看起来绝非易事,但是对于尝试表示赞赏。 - Gaurav Sarma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接