Java 如何从字符串中删除尾随零?
我有一个字符串Java 如何从字符串中删除尾随零?,java,string,Java,String,我有一个字符串salePrice,它的值可以是29.90000,91.01000,我想得到类似29.90,91.01的输出,如中所示,小数点后有两位数字。我在用一根绳子 试试这个 int lastIndex = salePrice.indexOf(".") + 2 salePrice = salePrice.substring(0, lastIndex); DecimalFormat df2 = new DecimalFormat( "#,###,###,###.##" ); double d
salePrice
,它的值可以是29.90000,91.01000
,我想得到类似29.90,91.01
的输出,如中所示,小数点后有两位数字。我在用一根绳子 试试这个
int lastIndex = salePrice.indexOf(".") + 2
salePrice = salePrice.substring(0, lastIndex);
DecimalFormat df2 = new DecimalFormat( "#,###,###,###.##" );
double dd = 100.2397;
double dd2dec = new Double(df2.format(dd)).doubleValue();
可能的解决办法之一
new BigDecimal("29.90000").setScale(2).toString()
或者如果你需要的话
new BigDecimal("29.90100").setScale(2, RoundingMode.HALF_UP).toString()
使用BigDecimal,因为从字符串转换为双精度可能会丢失精度强>
选择适合您情况的舍入模式 您可以使用
String.format("%.2f", value);
你可以用
String.format("%.2f", value);
这里有一个与你的问题相匹配的老派方法(你总是需要2位小数)
公共类LearnTrim
{
公共静态void main(最终字符串[]参数)
{
字符串值1=“908.0100”;
字符串值2=“876.1”;
字符串值3=“101”;
字符串值4=“75.75”;
字符串值5=“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));
}
私有静态字符串trimmy(最终字符串值)
{
整数分贝指数;
字符串返回值;
int valueLength=value.length();//使用StringUtils.length()实现空安全性。
decimalIndex=value.indexOf('.');
如果(十进制数!=-1)
{
如果(十进制<(值长度-3))
{
returnValue=value.substring(0,valueLength-2);
}
else if(十进制指数==(值长度-3))
{
返回值=值;
}
else if(十进制指数==(值长度-2))
{
returnValue=value+“0”;
}
else//decimalIndex==valueLength-1
{
返回值=值+00;
}
}
其他的
{
返回值=值+“.00”;
}
返回值;
}
}
这些是尾随的零,而不是前导的零。您做了什么来解决这个问题?如果你告诉我们你到目前为止做了什么,我们会更愿意回答你的问题。(询问更好问题的有用链接:,)@Raedwald不是dup;此问题希望保留最后两个数字在继续之前阅读此内容,以及+1,但它不应该是,####,#########
?因为数字并不总是以0.00
@doorknoble Jeje结尾。。。修正了…事实上,小数点+1后的2位数应该是“0.00”BigDecimal
经常被忽略。哦,顺便说一句,这就是“丢失”:p但是一个double
的精度确实不高:p@fge,好的答案必须正确且有趣!顺便说一句,它将失败29。90100@EvgeniyDorofeev,谢谢,修复了。@yannishristofakis感谢分享。值是表示某个值时的常用术语。将值转换为字符串并不是什么大问题。所以让我们等待OP的响应,看他是否能得到它。祝你好运。
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;
}
}