也许我的措辞不清楚所以我试图通过例子解释:
当然我可以使用switch / case语句执行此操作,但我想知道是否有内置或实用程序格式化,可以开箱即用。
提前致谢
答案 0 :(得分:4)
使用 G3 格式指定程序:
String result1 = 123.4567.ToString("G3");
String result2 = 1.234567.ToString("G3");
或通过String.Format
:
String result = String.Format("{0:G3}", 12.3456789);
答案 1 :(得分:0)
这是一个可以用于C#的java代码,我猜...
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();
}
答案 2 :(得分:0)
我不知道是否有更简单的东西,但这应该做你需要的:
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