我想编写一个代码来支持我使用小数四舍五入的值。那么,我该如何编写这样的代码呢?
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] 删除。
我来说两句