wpf*_*abe 7 c# string double valueconverter
这可能是愚蠢的,但它让我很难过.我需要/格式转换一个double以string具有强制性小数点.
1 => 1.0
0.2423423 => 0.2423423
0.1 => 0.1
1234 => 1234.0
Run Code Online (Sandbox Code Playgroud)
基本上,我想输出所有小数,但也要确保舍入值也有冗余.0.我相信有一种简单的方法可以实现这一目标.
用途double.ToString("N1"):
double d1 = 1d;
double d2 = 0.2423423d;
double d3 = 0.1d;
double d4 = 1234d;
Console.WriteLine(d1.ToString("N1"));
Console.WriteLine(d2.ToString("N1"));
Console.WriteLine(d3.ToString("N1"));
Console.WriteLine(d4.ToString("N1"));
Run Code Online (Sandbox Code Playgroud)
更新
(1.234).ToString("N1")产生1.2,除了删除附加的十进制数字外,还增加了千位分隔符
好吧,也许你需要实现一个自定义NumberFormatInfo对象,你可以从当前导出CultureInfo并使用double.ToString:
var culture = CultureInfo.CurrentCulture;
var customNfi = (NumberFormatInfo)culture.NumberFormat.Clone();
customNfi.NumberDecimalDigits = 1;
customNfi.NumberGroupSeparator = "";
Console.WriteLine(d1.ToString(customNfi));
Run Code Online (Sandbox Code Playgroud)
请注意,您需要克隆它,因为默认情况下它是只读的.
没有内置方法可以.0使用该.ToString()方法在整数的末尾附加强制,因为现有格式将根据您指定的小数位数进行截断或舍入。
我的建议是使用扩展方法滚动您自己的实现
public static String ToDecmialString(this double source)
{
if ((source % 1) == 0)
return source.ToString("f1");
else
return source.ToString();
}
Run Code Online (Sandbox Code Playgroud)
以及用法:
double d1 = 1;
double d2 = 0.2423423;
double d3 = 0.1;
double d4 = 1234;
Console.WriteLine(d1.ToDecimalString());
Console.WriteLine(d2.ToDecimalString());
Console.WriteLine(d3.ToDecimalString());
Console.WriteLine(d4.ToDecimalString());
Run Code Online (Sandbox Code Playgroud)
此输出中的结果:
1.0
0.2423423
0.1
1234.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3461 次 |
| 最近记录: |