C#中的舍入集成

莎莉·沙阿

我想编写一个代码来支持我使用小数四舍五入的值。那么,我该如何编写这样的代码呢?

Example 1:

(1) var mainValue = 1.2356 , decimals = 3 ===> 1.236
(2) var mainValue = 1.2356 , decimals = 2 ===> 1.24
(3) var mainValue = 1.2356 , decimals = 1 ===> 1.2

Example 2:
(1) var mainValue = 1.3210 , decimals = 3 ===> 1.321
(2) var mainValue = 1.3210 , decimals = 2 ===> 1.32
(3) var mainValue = 1.3210 , decimals = 1 ===> 1.3

Example 3:
(1) var mainValue = 1.0325 , decimals = 3 ===> 1.033
(2) var mainValue = 1.0325 , decimals = 2 ===> 1.03
(3) var mainValue = 1.0325 , decimals = 1 ===> 1.0

Example 4:
(1) var mainValue = 2.3912 , decimals = 3 ===> 2.391
(2) var mainValue = 2.3912 , decimals = 2 ===> 2.39
(3) var mainValue = 2.3912 , decimals = 1 ===> 2.4

Example 5:
(1) var mainValue = 5.4565 , decimals = 3 ===> 5.457
(2) var mainValue = 5.4565 , decimals = 2 ===> 5.46
(3) var mainValue = 5.4565 , decimals = 1 ===> 5.5
马修·沃森

我希望您在MidpointRounding.AwayFromZero调用Math.Round(). 没有它,你会得到奇怪的四舍五入结果,因为它四舍五入到最接近的偶数(所谓的“银行家的四舍五入”)。

试试这个代码;它给出了您的预期结果:

using System;

namespace Demo
{
    class Program
    {
        static void Main()
        {
            round(1.2356, 3);
            round(1.2356, 2);
            round(1.2356, 1);

            round(1.3210, 3);
            round(1.3210, 2);
            round(1.3210, 1);

            round(1.0325, 3);
            round(1.0325, 2);
            round(1.0325, 1);

            round(2.3912, 3);
            round(2.3912, 2);
            round(2.3912, 1);

            round(5.4565, 3);
            round(5.4565, 2);
            round(5.4565, 1);
        }

        static void round(double value, int decimals)
        {
            double result = Math.Round(value, decimals, MidpointRounding.AwayFromZero);
            Console.WriteLine($"round({value}, {decimals}) = {result}");
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章