鉴于这个数字:
我需要像这样回合:
是否有可以执行此操作的舍入方法?
感谢。
我的代码在这里:
String monto = "150.10";//150.26
String nuevoMonto = "";
String[] valores = monto.split("\\.");
System.out.println("Valores : " + valores);
System.out.println("Valores length: " + valores.length);
for (int i = 0; i < valores.length; i++) {
System.out.println("-->Valor: " + valores[i]);
}
if (valores.length == 2) {
nuevoMonto = valores[1];
System.out.println("Nuevomonto: " + nuevoMonto);
if (nuevoMonto.length() == 2) {
System.out.println("Dos posiciones decimales");
System.out.println(nuevoMonto.indexOf("0"));
if (nuevoMonto.indexOf("0") == 1) {
nuevoMonto = valores[0] + "." + nuevoMonto.substring(0, 1);
}
}
}
System.out.println("Nuevo monto: " + nuevoMonto);
答案 0 :(得分:3)
尝试这样的事情:
DecimalFormat decimalFormat = new DecimalFormat("#.0#");
System.out.println(decimalFormat.format(150.09));
System.out.println(decimalFormat.format(150.10));
新的十进制格式内的字符串允许修剪#
,并强制0
s
答案 1 :(得分:0)
如果你有一个字符串开头,也许没有必要将它解析为浮点数,然后重新格式化它。另一种方法是使用正则表达式:
String monto = "150.10";
String nuevoMonto = monto.replaceAll("(?<=\\.\\d)0$", "")
正则表达式由两部分组成。第一部分(?<=\\.\\d)
表示匹配需要以点和数字开头。第二部分0$
匹配字符串末尾的尾随零。我们什么都不用。
答案 2 :(得分:0)
在Java中有一个称为floor方法的表达式,可用于始终将具有任何形式的舍入值的值带到整数值,并从数据中删除任何相关的小数点 对此进行简单的检查是获取数据并检查数据是否为模数或模零 示例代码可能如下所示。
if ((monto % 0.1 ) == 0)
{
//has no relevant data so it should be floored
Nuevomonto = floor (monto);
}
else
{
Nuevomonto = monto;
}
希望有所帮助。