C#,double,decimalデータ型指定した小数点以下の桁数を切り捨てて保持
4033 ワード
ASP.NET in C# , ,C# 。
, :
/// <summary>
///
/// </summary>
/// <param name="d"> </param>
/// <param name="s"> ,s 0, 28</param>
/// <returns></returns>
public static decimal ToFixed(decimal d, int s)
{
decimal sp = Convert.ToDecimal(Math.Pow(10, s));
if (d < 0)
return Math.Truncate(d) + Math.Ceiling((d - Math.Truncate(d)) * sp) / sp;
else
return Math.Truncate(d) + Math.Floor((d - Math.Truncate(d)) * sp) / sp;
}
:
double decimal ToString("#.##") ;
System.Math Round(decimal d, int decimals) , “ ”;
System.Math Round(decimal d, int decimals, MidpointRounding mode) , (5);
System.Math :http://msdn.microsoft.com/zh-cn/library/system.math_methods(v=vs.80)
:
“ ..” Bug, 1 3 。
,double decimal 。
“ , , 。” :http://msdn.microsoft.com/zh-cn/library/system.double.aspx
((9.6-9)==0.6) false, (9.6-9) :0.59999999999999964;
((109.6-100)==(9.6-9)) false, 。。。
double ,double decimal , ( , double, ToFixed(9.6, 1) 9.5), , decimal double 。。。 , , double !
decimal ( ), 。。。
double decimal.MinValue decimal.MaxValue , decimal, 。。。 !~!~!~