post.Min.ToString("0.00").Replace(",", ".").Replace(".00", string.Empty)
post.Min
是一个双精度字符,例如12,34
或12,00
。预期输出为12.34
或12
。
我基本上想将逗号替换为一点,并剪切.00
部分(如果有的话)。
我之所以问是因为找不到任何东西,或者因为我不完全知道要搜索什么。这是重复项的很大变化,我根本找不到。请让我知道。
答案 0 :(得分:4)
最简单的解决方案似乎是使用CultureInfo.InvariantCulture
,但我拒绝这样的建议,即它比您在问题中所展示的使用一系列替换更为复杂。
post.Min.ToString("0.##", CultureInfo.InvariantCulture);
#
是数字占位符,像这样被描述为docs:
如果有一个数字,则用相应的数字替换“#”符号;否则,结果字符串中不会出现数字。
如果您在很多地方都使用它,这就是为什么要保持简单,那么可以使用扩展方法:
public static class MyExtensions
{
public static string ToHappyString(this double value)
{
return value.ToString("0.##", CultureInfo.InvariantCulture);
}
}
然后您只需要在使用.ToHappyString()
的任何地方调用它即可。例如,post.Min.ToHappyString()
答案 1 :(得分:1)
您可以使用.ToString("0.##")
。
喜欢
// Considered german culture; May be this is your current culture
CultureInfo culture = new CultureInfo("de");
double number1 = Double.Parse("12,34", culture);
double number2 = Double.Parse("12,00", culture);
Console.WriteLine(number1.ToString("0.##"));
Console.WriteLine(number2.ToString("0.##"));
输出:
12.34
12
答案 2 :(得分:0)
在MSDN上查看N
格式示例的ToString overloads article
。 Standard Numeric Format Strings
文章中也对此进行了介绍。
相关示例:
// Formatting of 1054.32179:
// N: 1,054.32
// N0: 1,054
// N1: 1,054.3
// N2: 1,054.32
// N3: 1,054.322
要使点(而不是逗号)正确使用,请与N0
结合使用:
System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
答案 3 :(得分:0)
double.ToString("0.##")
仅在不使用.00时考虑小数位,并且您可以创建自己的数字格式而无需使用文化:
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";
post.Min.ToString("0.##", nfi);