0
10進数をテキスト形式に変換するasp.netに関数を記述しました。小数点以下を除いて、ITは正しく機能します。どんなに早い助けでも高く評価されます。以下は私のコードスニペットに:10進数をasp.netのテキストに変更する
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lbl_num.Text = "";
string amt = "80434.08";
decimal num = Convert.ToDecimal(amt);
lbl_num.Text = SpellDecimal(num);
}
public static string SpellDecimal(decimal number)
{
string[] digit =
{
"", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen",
"seventeen", "eighteen", "nineteen"
};
string[] baseten =
{
"", "", "twenty", "thirty", "fourty", "fifty",
"sixty", "seventy", "eighty", "ninety"
};
string[] expo =
{
"", "thousand", "million", "billion", "trillion",
"quadrillion", "quintillion"
};
StringBuilder sb = new StringBuilder();
int thousands = 0;
decimal power = 1;
if (number < 0)
{
sb.Append("minus ");
number = -number;
}
decimal n = Decimal.Truncate(number);
decimal cents = Decimal.Truncate((number - n) * 100);
if (n == Decimal.Zero)
sb.Append("zero");
for (decimal i = n; i >= 1000; i /= 1000)
{
power *= 1000;
thousands++;
}
bool sep = false;
for (decimal i = n; thousands >= 0; i %= power, thousands--, power /= 1000)
{
int j = (int)(i/power);
int k = j % 100;
int hundreds = j/100;
int tens = j % 100/10;
int ones = j % 10;
if (j == 0)
continue;
if (hundreds > 0)
{
if (sep)
sb.Append(", ");
sb.Append(digit[hundreds]);
sb.Append(" hundred");
sep = true;
}
if (k != 0)
{
if (sep)
{
sb.Append(" and ");
sep = false;
}
if (k < 20)
sb.Append(digit[k]);
else
{
sb.Append(baseten[tens]);
if (ones > 0)
{
sb.Append("-");
sb.Append(digit[ones]);
}
}
}
if (thousands > 0)
{
sb.Append(" ");
sb.Append(expo[thousands]);
sep = true;
}
}
sb.Append(" and ");
if (cents < 10) sb.Append("0");
sb.Append(cents);
sb.Append("/100");
return sb.ToString();
}
}
それは私の代わりに 8万、四百三十の次の出力 8万、四三〇から四および08/100 を与えます-fourポイントゼロ8
toString()は数値を単語に変換しません。私はちょうど文字列として投げられた数字ではなく、言葉でそれを欲しい。 – user7543912
自分でToStringを上書きすることができます –