Android-四舍五入到小数点后2位[重复]
Posted
技术标签:
【中文标题】Android-四舍五入到小数点后2位[重复]【英文标题】:Android - Round to 2 decimal places [duplicate] 【发布时间】:2012-03-11 02:20:36 【问题描述】:可能重复:Round a double to 2 significant figures after decimal point
我知道有很多关于如何舍入此类数字的示例。 但是有人可以告诉我如何四舍五入,以获得我可以显示为的价值 字符串和总是有 2 位小数?
【问题讨论】:
docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html 这将是你的朋友。 double myNum = 34.393893 DecimalFormat df = new DecimalFormat("#.##"); String twoDigitNum = df.format(myNum); 【参考方案1】:一种简单的方法:
Double d;
Int i;
D+=0.005;
i=d*100;
Double b = i/100;
String s = b.toString():
【讨论】:
这看起来并不容易。尽管为尝试竖起大拇指。【参考方案2】:你可以使用String.format("%.2f", d)
,你的double会自动四舍五入。
【讨论】:
是的,我正在寻找,但应该是:String.format("%.2f", d),谢谢 更安全的方法是使用 DecimalFormat。使用您的方法,可以选择在某些国家/地区出现格式错误,作为开发人员您永远不会注意到并且可能不愿意检查。更好的方法是这样做: DecimalFormat percentFormat = new DecimalFormat("00.00"); String finalPercentage = percentFormat.format(percentage); 注意语言环境。在法语(加拿大)中,它将使用逗号而不是小数。像这样强制区域设置(示例):String.format(Locale.CANADA, "%.2f", d)
@usman 最初的问题是关于转换为具有固定精度的字符串,所以没有任何问题
如果您在某些地区搞砸了。那么这将是最好的解决方案:Double rounded= new BigDecimal(myDouble).setScale(2, RoundingMode.HALF_UP).doubleValue();
以上是关于Android-四舍五入到小数点后2位[重复]的主要内容,如果未能解决你的问题,请参考以下文章
NSNumberFormatter 仅四舍五入到小数点后 3 位