Test case for Integer and Floating point formatters (2/18)
http://bugzilla.ximian.com/show_bug.cgi?id=71112であるように、数値のフォーマッティング関係が結構不具合が多いです。自分がMonoを使って仕事をする場合は、この辺は致命傷になるのでちまちまテストケースを書いてみることに。ただ、型(byte/sbyte/short/ushrot/int/uint/long/ulong/float/double/decimal)とフォーマット(C/D/E/F/G/N/P/R/X/Custom)の組み合わせをまともにやるととんでもない量になるので型をint/doubleに絞っていますが、それでもテストメソッドで500くらいにはなりそ。(^^;
一応、MS.NETを正にしていますが、仕様が分からないケースも多くてコード書くのが大変そう。たとえば、
using System; class X { public static void Main () { Console.WriteLine (Int32.MaxValue.ToString ("E0.0")); Console.WriteLine (Int32.MaxValue.ToString ("E0")); Console.WriteLine (Int32.MaxValue.ToString ("E.0")); Console.WriteLine (Int32.MaxValue.ToString ("E0.X")); Console.WriteLine (Int32.MaxValue.ToString ("E0.9")); Console.WriteLine (Int32.MaxValue.ToString ("E9.0")); } } /* MS.NET E10.2 2E+009 E2147483647.0 E0X E09 E92147483647.0 */
最初のヤツがどういう理屈でE10.2になるのかさっぱりです。(^^;