0

DataFormatString="{0:F2}"私のascxページの値0.0001は「0.00」になり、必要なのは「0.01」です。これはゼロから四捨五入されています。DataFormatStringを使用してasp.netで実現することは可能ですか、それともカスタムの丸め方法を使用する必要がありますか?

4

3 に答える 3

3

あらゆる種類の丸めによってこれを達成することはできません。2 桁の 0.0001 は常に 0.00 になります。

本当にこれが必要な場合は、変換メソッドを作成する必要があります。最初にスペックを書きます。

DataFormatString は、データ バインドされたコントロールを提案するため、次のような追加の (計算された) 列が必要になる場合があります。 r = (v < 0.01 && r > 0.0) ? 0.01 : v;

于 2012-04-09T13:06:28.070 に答える
0

あなたはこれを試すことができます:

float fno=2.67f;
int no=Convert.ToInt32(fno);

//using Math.Round Function
decimal d=Math.Round(Convert.Toint64(fno));

//if we want after point 2 decimal then
decimal d=Math.Round(Convert.Toint64(fno),2);
于 2012-04-13T11:57:33.960 に答える
0
        /// <summary>
        /// Formats a number using a format string without rounding.
        /// </summary>
        /// <param name="value"></param>
        /// <param name="formatString"></param>
        /// <returns></returns>
        public static string Format(object value, string formatString)
        {
            double val;

            if (!Double.TryParse(value.ToString(), out val))
            {
                return "";
            }

            // Special handling for decimals
            if (formatString.Contains("."))
            {
                int multiplier = (int)Math.Pow(10, getDecimalPlaces(formatString) + 1);

                // Handle percentage
                if (!formatString.Contains('%'))
                {
                    multiplier /= 100;
                }

                return (Math.Truncate(val * multiplier) / multiplier).ToString(formatString); // prevent rounding by truncating
            }

            return val.ToString(formatString);
        }
于 2013-10-26T19:59:09.070 に答える