端数处理方式有以下几种端数处理方式规则正数负数向上取整向正无穷的方向取整2.1 → 32.9 → 3-2.1 → -2-2.9 → -2向下取整向负无穷的方向取整2.1 → 22.9 → 2-2.1 → -3-2.9 → -3截断取整向0的方向取整2.1 → 22.9 → 2-2.1 → -2-2.9 → -2四舍五入不分正负数取绝对值后运算小数(0.5舍去0.5进位),再带上原来的符号2.1 → 22.5 → 32.9 → 3-2.1 → -2-2.5 → -3-2.9 → -3银行家舍入不分正负数取绝对值后小数部不是0.5时向最近的整数取整小数部是0.5时向最近的偶数取整最后再带上原来的符号2.1 → 22.5 → 22.9 → 33.5 → 4-2.1 → -2-2.5 → -2-2.9 → -3-3.5 → -4JavaC#PythonJavaScript向上取整规则一致Math.ceil()向下取整规则一致Math.floor()截断取整规则一致Math.trunc()四舍五入Math.Round()指定参数MidpointRounding.AwayFromZerodecimal且ROUND_HALF_UPMath.Round()银行家舍入BigDecimalMath.Round() 默认无参数decimal且ROUND_HALF_EVEN相当于round()无原生支持
不同语言的端数处理差异
端数处理方式有以下几种端数处理方式规则正数负数向上取整向正无穷的方向取整2.1 → 32.9 → 3-2.1 → -2-2.9 → -2向下取整向负无穷的方向取整2.1 → 22.9 → 2-2.1 → -3-2.9 → -3截断取整向0的方向取整2.1 → 22.9 → 2-2.1 → -2-2.9 → -2四舍五入不分正负数取绝对值后运算小数(0.5舍去0.5进位),再带上原来的符号2.1 → 22.5 → 32.9 → 3-2.1 → -2-2.5 → -3-2.9 → -3银行家舍入不分正负数取绝对值后小数部不是0.5时向最近的整数取整小数部是0.5时向最近的偶数取整最后再带上原来的符号2.1 → 22.5 → 22.9 → 33.5 → 4-2.1 → -2-2.5 → -2-2.9 → -3-3.5 → -4JavaC#PythonJavaScript向上取整规则一致Math.ceil()向下取整规则一致Math.floor()截断取整规则一致Math.trunc()四舍五入Math.Round()指定参数MidpointRounding.AwayFromZerodecimal且ROUND_HALF_UPMath.Round()银行家舍入BigDecimalMath.Round() 默认无参数decimal且ROUND_HALF_EVEN相当于round()无原生支持