ToString("#0.##")或者string.Format("{0:###.###}", 0.1200)
如果是数字格式的数据,正常情况下,你啥事都不做,就是你想要的效果。
只有你做了什么以后,才会出现其他效果。
不系的呢,我是decimal类型,默认会有四个0的呢
ToString()即可
你这...我当然知道ToString(),我问的就是啥公式才能有这效果嘛
@你猜丶:
要什麼公式??
不就這樣
https://dotnetfiddle.net/ChCuaq
ToString("#.##") 试下这个呢
取最后一位判断是不是0就可以了啊
new BigDecimal("0.1200").stripTrailingZeros().toPlainString()
正好项目里也有这个需求 写了个方法
public static String suffixNotZero(String value) {
if (StringUtils.isBlank(value)) {
return "";
}
//按照小数点拆分
String[] split = value.split("\.");
if(split.length != 2){
return value;
}
char[] chars = split[1].toCharArray();
int count = 0;
//循环小数点后字符串
for (int i = chars.length- 1; i >= 0; i--) {
if (chars[i] == '0') {
count++;
} else {
break;
}
}
if(count != 0){
String substring = split[1].substring(0, split[1].length() - count);
return substring.length() != 0 ? split[0] + "." + substring : split[0];
}
return count == 0 ? value : value.substring(0, value.length() - count);
}
结果是什么类型?string类型就用tostring啊,你想有的是int有的是double???
楼主可以试一下这个方法,先获取小数点后的位数,然后再根据位数处理格式化的格式,再使用ToString格式化就好啦,望采纳哦
public static decimal FormatDecimal(decimal d)
{
string aa = d.ToString();
int len = aa.Length - aa.IndexOf(".") - 1;
string dig = "#0.";
int i = 0;
do
{
dig += "#";
i++;
}
while (i <= len);
return Convert.ToDecimal(d.ToString(dig));
}
转float就可以,自动去掉末尾0