我怎样才能使用String.Format
在C#这样的双打显示是这样的:
价值观:
-1.0
1.011
100.155
1000.25
11000.52221
显示字符串:
-1.00
1.011
100.2
1000
11001
主要的一点是我的宽度无论什么固定的5个字符。 我真的不关心有多少小数位如右图所示。 如果存在4个或多个数字到小数点左边我想要的一切权利小数被丢弃(包括小数点本身)。
看来喜欢的事,应该是一个非常标准的做法。 但我没有多少运气找到问题的解答。
一对夫妇更正的是,以显示字符串做出以上,我确实想四舍五入。
谢谢!
public string FormatNumber(double number)
{
string stringRepresentation = number.ToString();
if (stringRepresentation.Length > 5)
stringRepresentation = stringRepresentation.Substring(0, 5);
if (stringRepresentation.Length == 5 && stringRepresentation.EndsWith("."))
stringRepresentation = stringRepresentation.Substring(0, 4);
return stringRepresentation.PadLeft(5);
}
编辑:刚刚意识到,这并不垫零在小数的末尾(如有必要,在你的第一个例子),但应该给你的工具来完成它,因为你需要。
EDITx2:鉴于你最近除了你打算有舍入,它变得更加复杂。 首先,你必须做一个检查,看看你是否有任何小数和在什么位置小数点是。 然后,你必须把它四舍五入至小数点后一位,那么很可能通过输出运行。 请注意,这取决于你的算法,你可以得到其中的舍入对数字辊的一些不正确的结果(例如, -10.9999
可能成为-11.00
或-11
取决于你的实现)
通常这个规则应用于外汇市场上,我开发它,如下:
if (number < 1)
cell.Value = number.ToString("0.00000");
else if (number < 10)
cell.Value = number.ToString("0.0000");
else if (number < 100)
cell.Value = number.ToString("00.000");
else if (number < 1000)
cell.Value = number.ToString("000.00");
else if (number < 10000)
cell.Value = number.ToString("0000.0");
else if (number < 100000)
cell.Value = number.ToString("00000");
创建于如果双它要经常使用,在许多地方的扩展方法。
using System;
public static class DoubleExtensionMethods
{
public static string FormattedTo5(this double number)
{
string numberAsText = number.ToString();
if (numberAsText.Length > 5)
{
numberAsText = numberAsText.Substring(0, 5);
}
return numberAsText.TrimEnd('.').PadLeft(5);
}
}
然后使用率将是:
double myDouble = 12345.6789D;
string formattedValue = myDouble.FormattedTo5();