public void TestFormat() { var formatter = NumericFormatter.GetInstance(); var numeric = new PropertyDescrption("any", "any", "株"); string formatted; // 整数 formatted = formatter.Format("1", numeric); Assert.AreEqual("1", formatted); formatted = formatter.Format("10000", numeric); Assert.AreEqual("10,000", formatted); formatted = formatter.Format("-1000000", numeric); Assert.AreEqual("-1,000,000", formatted); formatted = formatter.Format("0", numeric); Assert.AreEqual("0", formatted); formatted = formatter.Format("", numeric); Assert.AreEqual("", formatted); // 小数 // 四捨五入で小数点以下1桁に丸める formatted = formatter.Format("1.23456789", numeric); Assert.AreEqual("1.2", formatted); formatted = formatter.Format("12345.6789", numeric); Assert.AreEqual("12,345.7", formatted); formatted = formatter.Format("-999999.9", numeric); Assert.AreEqual("-999,999.9", formatted); formatted = formatter.Format("123.00000000", numeric); Assert.AreEqual("123", formatted); formatted = formatter.Format("0.0", numeric); Assert.AreEqual("0", formatted); }
/// <summary> /// 使用すべきフォーマッタを返します。 /// </summary> /// <param name="description">項目定義</param> /// <returns>フォーマッタ</returns> public static IFormatter Create(PropertyDescrption description = null) { if (description == null) { return(InactionFormatter.GetInstance()); } switch (description.Unit) { case "円": case "百万円": return(CurrencyFormatter.GetInstance()); case "%": return(RatioFormatter.GetInstance()); case "株": case "倍": case "日": case "ヶ月": case "人": return(NumericFormatter.GetInstance()); case "年": default: return(InactionFormatter.GetInstance()); } }