我有一个字符串salePrice
,其值可以是29.90000,91.01000
,我想得到像29.90,91.01
这样的输出和小数点后的两位数。我正在使用一个字符串。
答案 0 :(得分:14)
可能的解决方案之一
new BigDecimal("29.90000").setScale(2).toString()
或者如果你需要围绕
new BigDecimal("29.90100").setScale(2, RoundingMode.HALF_UP).toString()
使用BigDecimal,因为从String转换为double会丢失精度!
选择适合您情况的舍入模式。
答案 1 :(得分:8)
试试这个......
DecimalFormat df2 = new DecimalFormat( "#,###,###,###.##" );
double dd = 100.2397;
double dd2dec = new Double(df2.format(dd)).doubleValue();
答案 2 :(得分:5)
int lastIndex = salePrice.indexOf(".") + 2
salePrice = salePrice.substring(0, lastIndex);
答案 3 :(得分:2)
你可以使用
String.format("%.2f", value);
答案 4 :(得分:1)
您可以使用Apache Commons Mathematics Library
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
ComplexFormat cf = new ComplexFormat(nf);
Complex complex = cf.parse("29.90000");
答案 5 :(得分:0)
这是一个符合你问题的老派方式(你总是想要2位小数)
public class LearnTrim
{
public static void main(final String[] arguments)
{
String value1 = "908.0100";
String value2 = "876.1";
String value3 = "101";
String value4 = "75.75";
String value5 = "31.";
System.out.println(value1 + " => " + trimmy(value1));
System.out.println(value2 + " => " + trimmy(value2));
System.out.println(value3 + " => " + trimmy(value3));
System.out.println(value4 + " => " + trimmy(value4));
System.out.println(value5 + " => " + trimmy(value5));
}
private static String trimmy(final String value)
{
int decimalIndex;
String returnValue;
int valueLength = value.length(); // use StringUtils.length() for null safety.
decimalIndex = value.indexOf('.');
if (decimalIndex != -1)
{
if (decimalIndex < (valueLength - 3))
{
returnValue = value.substring(0, valueLength - 2);
}
else if (decimalIndex == (valueLength - 3))
{
returnValue = value;
}
else if (decimalIndex == (valueLength - 2))
{
returnValue = value + "0";
}
else // decimalIndex == valueLength - 1
{
returnValue = value + "00";
}
}
else
{
returnValue = value + ".00";
}
return returnValue;
}
}