fork download
  1. using System;
  2.  
  3. namespace Q6807149
  4. {
  5. class MainClass
  6. {
  7. public static void Main (string[] args)
  8. {
  9. //ToString("c")を使って記入した場合
  10. int tempNum = -12345;
  11. String stTarget = tempNum.ToString("c");
  12. //日本語版Windows XPにおける、このプログラムの出力結果は?
  13. System.Console.WriteLine(Char.ConvertToUtf32("\\",0));
  14. System.Console.WriteLine(Char.ConvertToUtf32(stTarget,1));
  15.  
  16. //「日本語版」と前提をおいたのだけれど、これを英語版OS上で動作させようとすると、
  17. //-$12345みたいな数値になるわけだ。
  18. //こういう理由で「日本語版限定」されるのはすごく抵抗がある。
  19. //英語版でも日本円の単位で動作させてもらえるよう
  20. //ちゃんと「言語」を指定するなりしておくこと。
  21.  
  22. //以下、2011-06-14 追記。
  23. //「なぜなのか」を説明することばかりが頭にあって、「やりたいこと」を見てなかった。
  24.  
  25. //CultureInfoで言語を指定してみた
  26. String s = (-12345).ToString("c",new System.Globalization.CultureInfo("ja-jp"));
  27. System.Console.WriteLine(s);
  28.  
  29. //驚愕の事実。.NET Frameworkでは165(92ではないから置換できないんだよ、って話をしたかった)
  30. //ただ、Monoでは92が出力された。うーむ。
  31. //他に資料がなければ別にどちらの実装も間違っているわけではないと思う。
  32. //地域と言語のオプションはどっちだろう
  33.  
  34. System.Console.WriteLine(Char.ConvertToUtf32(s,1));
  35.  
  36. //Currencyでいいじゃん。
  37. //NumberFormatInfo.CurrencySymbol帰ってくるのは言語によらず
  38. //(代入してないので)初期値のU+00A4 CURRENCY SIGNのようだ。
  39. //なんでこんな仕様に…
  40.  
  41. System.Console.WriteLine(int.Parse(s, System.Globalization.NumberStyles.Currency,new System.Globalization.CultureInfo("ja-jp")));
  42.  
  43.  
  44.  
  45. }
  46. }
  47. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty