如何舍入数字,从中删除“E”并从整数中删除小数点?

时间:2018-05-05 21:50:41

标签: java android

我有一个加密组合,但是长的百分比数字或“E”而不是大数字真的撕毁了设计,就像在这个例子中一样:

enter image description here

如何修复它们(舍入到2位小数,删除E,从5中删除.0)?

2 个答案:

答案 0 :(得分:0)

试试这个:

Math.round(number * 100.0) / 100.0;

如果您搜索,可以找到很多其他方法。

答案 1 :(得分:0)

使用Double构造函数,您可以将所有这些字符串转换为双精度数。

String someNumberString = "1.2E5";
Double dNum = new Double(someNumberString);

你可以这样做四舍五入:

double rounded = (Math.round(dNum * ROUND_TO_OFFSET) / ROUND_TO_OFFSET)

其中ROUND_TO_OFFSET指定要舍入的数字。例如。 ROUND_TO_OFFSET= 100向最接近的0.01舍入。但这有一个缺点。 Math.round返回一个long,所以如果你的dNum * ROUND_TO_OFFSET产生的数字大于或小于long可以容纳的数字,它将无法正常工作。

您可以使用DecimalFormat类将任何double格式化为漂亮,易读的格式。

DecimalFormat decimalFormat = new DecimalFormat("#,##0.#####");
String formattedDouble = decimalFormat.format(someDouble);

这使您可以轻松地将double值转换为如下所示的字符串: 1,234,567.89012

如果你需要更多的精度或大于Long.MAX_VALUE可以处理的数字,你应该检查java的BigDecimal类。 BigDecimal提供了自己的循环方法,允许您指定要舍入的内容。您仍然可以通过调用BigDecimal的doubleValue()函数来使用DecimalFormat类。