SRM 149 DIV2 250
問題を読む為の英単語
単語 | 意味 |
---|---|
frequently | しばしば、頻繁に |
amount | 総計 |
問題概要
入力:ドル、セント
出力:与えられるフォーマットで整形されたドル、セントの合計(string)
フォーマット用件
1. 先頭に"$"をつけること
2. 下桁より3桁おきに","をつけること
3. centはドルの少数点以下とし、例えば"2"が与えられた場合、".02"(ゼロサプレス無し)とする。
回答(C#)
class FormatAmt { public string amount (int dollars, int cents) { string amt = ""; amt += "$"; // Dollors string t_doll; int cnt = 1; t_doll = dollars.ToString (); for (int i = 0; i <= (t_doll.Length - 1); i++,cnt++) { amt += t_doll.Substring (i, 1); if (((t_doll.Length - cnt) % 3) == 0) if((t_doll.Length - cnt) != 0) amt += ","; } // Cent string t_cent; t_cent = cents.ToString (); amt += "."; if (t_cent.Length > 1) { amt += t_cent; } else { amt += "0"; amt += t_cent; } return amt; } }
他の人のコードチェック
とある人のコード(Java)
return String.format("$%,d.%02d", dollars,cents);
っと一行だけ。。。 ぐぬぬ。そして以下で修正。
よく使いそうなコード
int doll = 3; String.Format("{0}doll",doll)
フォーマットに整形したstringを返す。
{0}は引数を示し、第2引数を示している。
またフォーマットの指定は、
{x:D4}で、4桁表示、ゼロサプレス無し(x:引数ナンバー)
{x:#,0}で、各数値グループ毎(3桁おき)に","を挿入する。
「#」は桁プレースホルダ(対応する桁があれば表示、なければ非表示)
「,」は桁区切り記号(3桁おきに区切る)
「0」はゼロ・プレースホルダ(対応する桁があれば表示、無ければ0を表示)
参考文献
数値を右詰めや0埋めで文字列化するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/116formatint/formatint.html
数値を3けた区切りの文字列に変換するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/620number3groupsep/number3groupsep.html
【C#】数値を指定の書式に変換する
http://www.openreference.org/articles/view/528