Android - Round to 2 decimal places
Possible Duplicate:
Round a double to 2 significant figures after decimal point
我知道有很多关于如何舍入此类数的例子。但是有人能给我演示一下如何圆二次,以得到我可以显示为字符串和总是有两个小数位?
- docs.oracle.com JavaSE / 7 /文档/ / / / / decimalformat.ht Java API文本zwnj &;& # 8203;这将为你的朋友。
- 双mynum = 34.393893 decimalformat decimalformat("# DF =新的字符串。# #");twodigitnum = df.format(mynum);
您可以使用String.format("%.2f", d),您的双精度将自动四舍五入。
- 是的,我在找这个,但应该是:string.format("%.2f",d),谢谢。
- 谢谢你纠正我的错误=)
- @Olegg很好的解决方案谢谢
- 更安全的方法是使用decimalformat。对于您的方法,在某些国家/地区有一个格式错误的选项,作为开发人员,您可能不会注意到,而且可能不愿意检查。更好的方法是这样做:decimalformat percentage format=new decimalformat("00.00");string finalPercentage=percentageformat.format(percentage);
- 谢谢,这对我有用。
- 小心现场。在法语(加拿大)中,它将使用逗号而不是十进制。这样的强制区域设置(示例):String.format(Locale.CANADA,"%.2f", d)。
- 但这会把它转换成字符串!:
- @usman最初的问题是如何以固定的精度转换为字符串,所以没有什么问题。
- 将字符串格式与此方法一起使用是不安全的。如果您的应用程序将在国际上使用,您将开始收到大量崩溃报告。报告NumberFormatExceptions或RuntimeExceptions。原因是有些国家使用逗号作为小数分隔符,而另一些国家使用句点。使用十进制格式或数字格式是一种更安全的方法。当然,也可以执行强制区域设置,但它可能会混淆不习惯将句点视为小数分隔符的用户。
- 如果你在某些地方搞砸了。那么这将是最好的解决方案:Double rounded= new BigDecimal(myDouble).setScale(2, RoundingMode.HALF_UP).doubleValue();。
一个简单的方法:
1 2 3 4 5 6
| Double d;
Int i;
D+=0.005;
i=d*100;
Double b = i/100;
String s = b.toString(): |