也许我的措辞不清楚,所以我试着举例说明:
当然,我可以用一个开关/case语句来完成这个任务,但是我想知道是否有任何内置的或实用的格式化,什么可以做到这一点。
提前感谢
发布于 2014-10-07 04:30:51
使用G3格式说明符:
String result1 = 123.4567.ToString("G3");
String result2 = 1.234567.ToString("G3");
或者通过String.Format
String result = String.Format("{0:G3}", 12.3456789);
发布于 2014-10-07 04:32:05
这是一个java代码也可以用于C#,我想..
public static double round(double value) {
int places = 0;
BigDecimal bd = new BigDecimal(value);
if(value>=100){
places=0;
}else if(value<=100 && value>=10){
places = 1;
}else{
places = 2;
}
bd = bd.setScale(places,RoundingMode.UP);
return bd.doubleValue();
}
发布于 2014-10-07 04:41:54
我不知道是否有更简单的东西,但这应该能满足你的需要:
public static string TakeNumDigits(decimal number, int digits, NumberFormatInfo formatProvider = null)
{
formatProvider = formatProvider ?? NumberFormatInfo.CurrentInfo;
string num = number.ToString(formatProvider);
if (digits >= num.Length)
return num;
string decSep = formatProvider.NumberDecimalSeparator;
int decSepIndex = num.IndexOf(decSep);
if (decSepIndex == -1 || decSepIndex + digits > num.Length)
return num.Substring(0, digits);
else
return num.Substring(0, digits + decSep.Length);
}
你的样品:
decimal num1 = 123.4567m;
string result = TakeNumDigits(num1, 3); // 123
decimal num2 = 12.34567m;
result = TakeNumDigits(num2, 3); // 12.3
decimal num3 = 1.234567m;
result = TakeNumDigits(num3, 3); // 1.23
https://stackoverflow.com/questions/26235759
复制相似问题