繁体   English   中英

C#中的十进制格式

[英]Decimal Formatting in C#

我想要一个显示最多N个小数位的函数,但如果不需要则不填0,所以如果N = 2,

2.03456 => 2.03
2.03 => 2.03
2.1 => 2.1
2 => 2

我看到的每个字符串格式化的东西都会填充2到2.00之类的值,这是我不想要的

怎么样这个

// max. two decimal places
String.Format("{0:0.##}", 123.4567);      // "123.46"
String.Format("{0:0.##}", 123.4);         // "123.4"
String.Format("{0:0.##}", 123.0);         // "123"

尝试这个:

string s = String.Format("{0:0.##}", value);

我做了一个快速扩展方法:

public static string ToString(this double value, int precision)
{
    string precisionFormat = "".PadRight(precision, '#');
    return String.Format("{0:0." + precisionFormat + "}", value);
}

使用和输出:

double d = 123.4567;
Console.WriteLine(d.ToString(0));  // 123
Console.WriteLine(d.ToString(1));  // 123.5
Console.WriteLine(d.ToString(2));  // 123.46
Console.WriteLine(d.ToString(3));  // 123.457
Console.WriteLine(d.ToString(4));  // 123.4567

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM