长整数到可读字符串

时间:2015-02-14 10:27:40

标签: c# math decimal-point

我希望能够将很长的整数转换为可读的字符串

这从1500(1.50k)到12.500.000.000是12.50b,依此类推到不可读的数字,将被标记为A然后B等。

现在我非常确定有一个很好的逻辑,它说如果整数的字符串长度是9,则点应该放在第3和第6位或其他位置。

我的数学(及其可编程逻辑)对我来说是不存在的,所以任何人都可以帮助我吗?

这是我现在的混乱和不可重复的尝试:

int val = 150050004;
string theValue = val.ToString();
int valLength = theValue.Length;

string newVal = theValue;
if (valLength == 7) {
    newVal = theValue.Substring(0, 1) +"."+ theValue.Substring(1, 2);
}

if (valLength == 8) {
    newVal = theValue.Substring(0, 2) +"."+ theValue.Substring(2, 2);
}

if (valLength == 9) {
    newVal = theValue.Substring(0, 3) +"."+ theValue.Substring(3, 2);
}

if (valLength > 6 && valLength < 10) {
    newVal = newVal + "m";
}

newVal 输出150.05m

1 个答案:

答案 0 :(得分:1)

试着打破&#34;。&#34; :

NumberFormatInfo numFormat = new NumberFormatInfo();
numFormat.NumberDecimalSeparator = ",";
numFormat.NumberGroupSeparator = ".";

long val = 12345678912345;
String result = val.ToString("#,##0",numFormat);

要添加后缀信息,请执行以下操作:

String result = null;
if (val / 1000000000 > 1)
    result = val.ToString("#,##0,#,,B",numFormat);
else if (val / 1000000 > 1)
    result = val.ToString("#,##0,#,M", numFormat);
else if (val / 1000 > 1)
    result = val.ToString("#,##0,#K", numFormat);
else
    result = val.ToString("#,##0", numFormat);