在C#中使用Math.Round(1.25, 1),期望得到1.3,结果却是1.2。
1.因为Math.Round方法并不是遵循四舍五入的原则,而是采用“四舍六入五成双”这种方式,若需要舍入到的位的后面"小于5"或"大于5"的话,按通常意义的四舍五入处理.若"若需要舍入到的位的后面"等于5",则要看舍入后末位为偶数还是奇数,举例:
Math.Round(1.25, 1) = 1.2 因为5前面是2,为偶数,所以把5舍去不进位
Math.Round(1.35, 1) = 1.4 因为5前面是3,为奇数,所以进位
而0也看成为偶数,所以Math.Round(0.5, 0) = 0
2.从统计学的角度,"四舍六入五成双"比"四舍五入"要科学,它使舍入后的结果有的变大,有的变小,更平均.而不是像四舍五入那样逢五就入,导致结果偏向大数.
例如:1.15+1.25+1.35+1.45=5.2,若按四舍五入取一位小数计算
1.2+1.3+1.4+1.5=5.4
按"四舍六入五成双"计算,1.2+1.2+1.4+1.4=5.2,舍入后的结果更能反映实际结果
3.在C#和VB.net,都是"四舍六入五成双"原则,而 Sql Server 是简单的"四舍五入"。
但是如果单独对一个数进行四舍五入,这种方法明显是不行的,因为Math.Round(0.5, 0) = 0,所以需要另外自己写一个方法去实现,下面是在我们项目中用的方法,供大家参考:
public static decimal Round(decimal d, int decimals)
{
decimal tenPow = Convert.ToDecimal(Math.Pow(10, decimals));
decimal scrD = d * tenPow + 0.5m;
return (Convert.ToDecimal(Math.Floor(Convert.ToDouble(scrD))) / tenPow);
}
另外,如果小数位足够长,也可以Decimal.Round这个方法,举例:
Decimal.Round(1.25, 1) = 1.2
但是如果是 Decimal.Round(1.251, 1) = 1.3
所以采用下面的方法也能达到四舍五入的效果
public static decimal MyDecimalRound(decimal d, int decimals)
{
d = d + 0.000000000000001m;
return Decimal.Round(d, decimals);
}
分享到:
相关推荐
### C语言math.h文件使用说明及相应示例 #### Math.h函数概述 `math.h`是C语言标准库中用于处理数学运算的核心头文件之一。它包含了一系列用于执行各种数学运算的函数,如基本算术操作、三角函数、对数和指数函数...
### Java中的Math类详解 #### 一、概述 `Math`类是Java标准库中的一个核心类,位于`java.lang`包下,...以上就是关于Java中`Math`类的相关知识点的详细介绍,包括常用方法的使用示例以及部分高级数学函数的简要说明。
以下是对Java Math类中一些重要方法的详细说明: 1. **Math.abs()**:这个方法用于计算一个数的绝对值。例如,`Math.abs(-5)`会返回5,因为它返回了-5的非负值。 2. **Math.sqrt()**:这个方法计算一个非负数的...
以下是对`Math`类中一些常用方法的详细说明: 1. `abs(arg)`: 这个方法接受一个数值作为参数,返回其绝对值。`arg`可以是`int`, `long`, `float`, 或 `double`类型。例如: - `Math.abs(-30.5)` 返回 `30.5` - `...
8. 其他取整方法:在JavaScript中除了使用Math.floor()向下取整外,还有Math.ceil()向上取整,以及Math.round()四舍五入等其他取整方法,它们与Math.floor()共同构成了JavaScript处理数值取整的完整工具集。...
var percent = (Math.round(nval*10000))/100+'%'; 说明: 1.Math.round(num)函数是对num数字进行四舍五入的操作,去除小数位,只留下整数位。例如2.11,返回的结果就是2;0.51,返回的结果就是1;本例子中的0.12345...
JavaScript中的Math对象包含了一系列用于数学计算的函数,其中包括random、round、ceil和floor四个方法,它们在编程中常用于处理数值运算,特别是涉及到随机数和数值取整的情况。以下是这四个方法的详细说明: 1. *...
这个方法与上一个方法类似,但它使用 `Math.round()` 来四舍五入结果,这将使得生成的随机数包括最大值和最小值。例如,生成 5 到 15 之间的随机整数,包括 5 和 15: ```javascript var ...
以下是对标题和描述中提到的常用Math方法的详细说明: 1. **min()和max()方法** `Math.min()` 和 `Math.max()` 分别用于找出一组数值中的最小值和最大值。例如: ```javascript let numbers = [2, 4, 3, 6, 3, 8...
下面详细说明Math对象中几个常用的内置方法及其使用知识点: 1. Math.min() 和 Math.max() 这两个方法用于找出一组数值中的最小值和最大值。它们可以接受任意数量的数字作为参数,返回最小或最大的那个值。 示例:...
这里的关键在于 `Math.round(Rand * Range)`,它首先计算出 `Rand * Range` 的结果,然后使用 `Math.round()` 函数将其四舍五入为最接近的整数。这样可以确保返回的结果在 `[Min, Max]` 这个闭区间内。 ##### 例2:...
除了上述方法,`Math`对象还包含其他一些方法,如`cos()`, `sin()`, `tan()`, `atan2()`, `hypot()`等,分别用于计算余弦、正弦、正切、两数角度之和的反正切以及两个数的平方根之和。这些方法极大地扩展了...
另一个常用的方法是`Math.round(number)`,它会将数字四舍五入到最接近的整数。例如,`Math.round(3.7)`将返回4,而`Math.round(-2.3)`将返回-2。 对于平方根运算,我们可以使用`Math.sqrt(number)`,它返回一个数...
Math.round(11.5) 等于 12,Math.round(-11.5) 等于 -11(C)。 4. 复杂表达式的输出结果: 复杂表达式的输出结果是 false(B)。因为 x = 20,y = 30,不满足任何一个条件,所以 boolean 变量 b 的值为 false。 ...
以下是对Math对象及其相关方法的详细说明: 1. **无需创建实例**: Math对象是一个静态对象,不能像String或Date那样通过`new`关键字实例化。我们可以直接调用Math对象的任何方法,如`Math.sqrt(16)`来计算平方根...
//document.all['price'][removed]=Math.round(total*100)/100 " 金币"; document.all['price'][removed]=Math.round(total*100*0.6) " <?=$extcredits2unit?>(6折)"; regform.allpri.value=Math....
Math.round(11.5) 等于 12,Math.round(-11.5) 等于 -11,因此正确的答案是 D。 4. 程序输出结果: 由于 boolean 变量 b 的赋值语句中有多个条件语句,因此需要分析每个条件语句的值。由于 x=20,小于 50,y=30,...
下面通过几个具体的例子来说明如何使用`ceil()`函数: ```python import math # 示例1: 对负数进行向上取整 print("math.ceil(-45.17):", math.ceil(-45.17)) # 输出 -45 # 示例2: 对正数进行向上取整 print(...
在Java中,我们可以使用`Math.round()`方法进行四舍五入。例如,如果你有一个浮点数`num = 3.14159`,想要四舍五入到整数,可以写`int roundedNum = Math.round(num)`,结果是3。如果想保留两位小数并四舍五入,可以...