我有一个价格字段显示,有时可以是100或100.99或100.9,我想要的是显示价格在2位小数,只有当小数是输入的价格,例如,如果它是100,所以它应该只显示100,而不是100.00,如果价格是100.2,它应该显示100.20,类似的100.22应该是相同的。我在谷歌上搜索了一些例子,但它们并不完全符合我的要求:
// just two decimal places
String.Format("{0:0.00}", 123.4567); // "123.46"
String.Format("{0:0.00}", 123.4); // "123.40"
String.Format("{0:0.00}", 123.0); // "123.00"
一种不雅的方式是:
var my = DoFormat(123.0);
public static string DoFormat( double myNumber )
{
var s = string.Format("{0:0.00}", myNumber);
if ( s.EndsWith("00") )
{
return ((int)myNumber).ToString();
}
else
{
return s;
}
}
不优雅但在一些项目中为我在类似的情况下工作。
很抱歉重新激活这个问题,但是我在这里找不到正确的答案。
在格式化数字时,您可以将
所以:
// just 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.Format("{0:0.0#}", 123.4567) // "123.46"
String.Format("{0:0.0#}", 123.4) // "123.4"
String.Format("{0:0.0#}", 123.0) // "123.0"
对于此格式方法,始终使用。
最简单的解决方案来自@andrew(here)。所以我个人会用这样的东西:
var number = 123.46;
String.Format(number % 1 == 0 ? "{0:0}" : "{0:0.00}", number)
这是一个常见的格式化浮动数字用例。
不幸的是,所有内置的单字母格式字符串(如F,G,N)都不能直接实现这一点。br>例如,
您必须使用
完整的代码示例:
double a = 123.4567;
double b = 123.40;
double c = 123.00;
string sa = a.ToString("0.##"); // 123.46
string sb = b.ToString("0.##"); // 123.4
string sc = c.ToString("0.##"); // 123