首页
学习
活动
专区
圈层
工具
发布

Python之谜:四舍五入round(4.5)等于4?

四舍五入4.5,应该返回结果5,但是使用Python或NumPy内置的round方法计算,结果都返回结果4 先来还原一下: In [1]: round(4.5) Out[1]: 4 In [2]: import... numpy as np In [3]: np.round(4.5) Out[3]: 4.0 如果再看一个例子,四舍五入保留小数点后1位,发现它又是进位的: In [1]: round(4.15,1)...从统计学的角度,“奇进偶舍”比“四舍五入”更为精确:在大量运算时,因为舍入后的结果有的变大,有的变小,更使舍入后的结果误差均值趋于零。...“奇进偶舍”使测量结果受到舍入误差的影响降到最低。 奇进偶舍与四舍五入不同之处的规则有: 保留位数的后一位如果是5,而且5后面仍有数。...=ROUND_HALF_UP)  结果: Decimal('5')    ROUND_HALF_UP对应数学中的四舍五入,再看4.15四舍五入保留1位: Decimal(4.15).quantize(Decimal

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    视觉进阶 | Numpy和OpenCV中的图像几何变换

    作者 | Daryl 编译 | Arno 来源 | Analytics Vidhya 介绍 上面的图像使它不言而喻什么是几何变换。它是一种应用广泛的图像处理技术。...在本文中,我将向你介绍一些变换,以及如何在Numpy和OpenCV中执行这些变换。特别是,我将关注二维仿射变换。你需要的是一些基本的线性代数知识。...从右到左可以理解函数是如何应用的。 Numpy中的变换 现在对于图片,有几点需要注意。首先,如前所述,我们必须重新调整垂直轴。其次,变换后的点必须投影到图像平面上。...左手坐标系旋转是通过交换符号来实现的。 由于点围绕原点旋转,我们首先将中心平移到原点,然后再进行旋转和缩放 然后将点变换回图像平面。 将变换点舍入为整数以表示离散像素值。...OpenCV中的变换 现在你已经对几何变换有了更好的理解,大多数开发人员和研究人员通常省去了编写所有这些变换的麻烦,而只需依赖优化的库来执行任务。在OpenCV中进行仿射变换非常简单。

    2.8K20

    python小数的进位与舍去

    从统计学的角度,“奇进偶舍”比“四舍五入”更为精确:在大量运算时,因为舍入后的结果有的变大,有的变小,更使舍入后的结果误差均值趋于零。...“奇进偶舍”使测量结果受到舍入误差的影响降到最低。 ​...,原因就在于取整规则是采用了奇进偶舍(四舍六入)的方式,简单来说就是,整数部分为奇数,四舍五入.如果是偶数,就采用五舍六入的方式,而这个规则,就属于数值修约的规则 二.quantize quantize...`(*exp* [,*rounding* [,*context* [,*watchexp* ] ] ] ) 舍入后返回一个等于第一个操作数的值,并具有第二个操作数的指数。...>>> Decimal('1.41421356').quantize(Decimal('1.000')) Decimal('1.414') 三.实现四舍五入 舍入后返回一个等于第一个操作数的值,并具有第二个操作数的指数

    2K10

    二.OpenCV和Numpy读取修改像素、几何图形绘制

    知识点如下: 一.传统读取像素方法 二.传统修改像素方法 三.Numpy读取像素方法 四.Numpy修改像素方法 五.几何图形绘制 ---- 一.传统读取像素方法 1.灰度图像,返回灰度值 返回值=...155 104 61 ---- 四.Numpy修改像素方法 使用Numpy的itemset函数修改像素,调用方式如下: 图像.itemset(位置, 新值) 例如:img.itemset((88,99...img.itemset((78, 78, 1), 0) img.itemset((78, 78, 2), 0) print(img[78, 78]) #[155 104 61] #[0 0 0] ---- 五.几何图形绘制...本小节主要讲解OpenCV中几何图形的绘制方法,包括: cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2.polylines() cv2...一.传统读取像素方法 二.传统修改像素方法 三.Numpy读取像素方法 四.Numpy修改像素方法 五.几何图形绘制 ---- 参考文献: [1] 罗子江. Python中的图像处理[M].

    2.9K20

    Java BigDecimal 的舍入模式(RoundingMode)详解

    RoundingMode 是 Java 中用于定义舍入行为的枚举类。它主要用于精确的数字运算,尤其是涉及到小数点的情况下。...以下是 RoundingMode 的详细讲解及举例说明: RoundingMode 常见枚举值 1、UP 向远离零的方向舍入。 例如:1.1 会舍入为 2,-1.1 会舍入为 -2。...4、FLOOR 向负无穷方向舍入。 例如:1.9 会舍入为 1,-1.9 会舍入为 -2。 5、HALF_UP 向最接近的数字舍入,如果距离相等,则向远离零的方向舍入,即四舍五入。...例如:1.5 会舍入为 2,-1.5 会舍入为 -2。 6、HALF_DOWN 向最接近的数字舍入,如果距离相等,则向接近零的方向舍入。 例如:1.5 会舍入为 1,-1.5 会舍入为 -1。...7、HALF_EVEN 向最接近的数字舍入,如果距离相等,则向偶数方向舍入(银行家舍入法)。 例如:1.5 会舍入为 2,2.5 会舍入为 2。

    1.1K10

    ​AdaRound:训练后量化的自适应舍入

    贡献 建立了一个理论框架,以一种既考虑数据本身又考虑任务损失的特征的方式来分析舍入的影响。使用此框架,可以将舍入公式转化为二次无约束二进制优化(QUBO)问题。...在100次运行中,发现48个随机抽样的舍入选择比 Rounding-to-nearest 有更好的性能。这意味着存在许多舍入解决方案要比四舍五入法更好。...本文的其余部分旨在设计一种有充分根据和计算效率的舍入机制。 ?...随机舍入与四舍五入对比 方法 在本节中,提出AdaRound,这是一种用于训练后量化的新舍入程序,在理论上是有充分根据的,并且在实践中显示出显着的性能改进。本文从理论上分析由于量化引起的损失。...图3显示了经过整流的 Sigmoid 和 的这种组合如何导致许多权重学习舍入而不是舍入到最接近的舍入,以提高性能,同时最终收敛到接近0或1的水平。

    2.6K11

    FFT算法前身DFT(离散傅里叶变换)

    几何意义 这张图展示了复指数 在复平面上的几何意义: 红色箭头:复指数向量 ,在单位圆上旋转。 蓝色线段:投影到实轴,值为 。 绿色线段:投影到虚轴,值为 。...内积 / 投影的直观理解 内积运算本质上就是计算两个向量的相似度;我们把 和 看作一组基函数(就像几何里的“坐标轴”);把信号 投影到这些基函数上,投影的系数就是该频率分量的“含量”。...FFT 是“如何高效计算同一个 DFT”的算法:通过分解与复用正弦子结构,把运算量降到 N·log₂N,N 越大优势越明显;同时更少的乘加也意味着更小的舍入误差。...,打印了与 np.fft.fft 的复谱 RMSE(本例约 6e-12,基本等于浮点舍入误差)。...N=1024, 采样率 fs=1000.0 Hz 与 NumPy FFT 复谱的 RMSE = 6.054e-12 RMSE 应接近浮点舍入误差(本例通常 ~1e-10 量级)。

    16410

    Python 四舍五入

    四舍五入 本是很简单的道理,在实际使用过程中发现有些细节上的不同。 标准的四舍五入 舍入到整数: 如果小数部分小于0.5,则舍去小数部分,保留整数部分。...舍入到指定的小数位数: 对于需要舍入的位数右侧的第一位数字(即“决定位”),如果它小于5,则舍去它和它右侧的所有数字。...3.5 向偶数舍入到整数是 4。 向上舍入: 不论“决定位”是什么数字,总是将数值舍入到比它大的最接近的整数或小数位数。 例如: 2.1 向上舍入到整数是 3。...向下舍入: 不论“决定位”是什么数字,总是将数值舍入到比它小的最接近的整数或小数位数。 例如: 2.9 向下舍入到整数是 2。...10): value_str = '5.0' + str(i) + '55555' value = Decimal(value_str) rounded_value = value.quantize

    1.1K10

    走进“乌云”教科书书里的漏洞(4)【充值舍入漏洞】

    0x01 漏洞解析舍入漏洞是财务、支付、电商等涉及金额计算的系统中,因对小数金额的舍入规则设计不当或计算逻辑不统一,导致实际金额与预期金额产生偏差,进而被攻击者利用获取非法利益的业务逻辑漏洞。...其核心成因是不同系统模块(如订单计算、支付对账、退款结算)采用不一致的舍入方式,或未对舍入后的金额进行二次校验,形成金额差漏洞。...具体表现与危害:舍入方式不统一:例如,订单系统计算商品总价时采用 “四舍五入”(如 1.234 元舍入为 1.23 元),但支付系统对账时采用 “进一法”(如 1.234 元舍入为 1.24 元),或退款系统采用...典型攻击场景:攻击者拆分大额订单为多笔小额订单(如将 100 元订单拆分为 100 笔 1 元订单),利用每笔订单舍入产生的 0.01 元差额,通过批量操作获取非法收益;或在退款场景中,利用舍入差异使实际退款金额高于原支付金额...“总价” 参数,而是从数据库中获取商品基础单价、规格溢价(如尺寸、颜色加价)、当前有效优惠规则(如满减、折扣券),按照预设的业务逻辑重新计算订单总价,生成 “后端计算总价”,并与前端传递的 “前端提交总价

    32810

    SAP 物料的最小订购量、及舍入值的测试

    在物料主数据中,是设置于MRP1的最小批量(Minimum Lot Size)舍入值,信息记录中的是在采购组织数据中的最小数量(Minimum Qty).最小包装量(MPQ)在物料主数据的舍入值或舍入参数文件...物料主数据中的最小批量、舍入值,在MRP运行时都会起作用。如果同时在物料主数据中设了最小批量和舍入值,在MRP运行时,取其中的大值 。...如果物料主数据中存在舍入值(Rounding QTY),则建立PO时,系统首次会将你输入的数量转为最小订购量(如果你输入的数量低于舍入值),更复杂的情况下,是可以更改你输入的采购单位的。...如果舍入后的数量低于信息记录的最小订购数量,系统会给出提示。 无论如何,目前没找到有效方法让MRP运算时生成的PR参考信息记录中的最小数量或是舍入值,即便PR中已经分配到了相关供应商。...网上资料显示,除非将舍入值信息放到框架合同中,MRP运算时方可参考与供应商特定的舍入值信息。

    2K20

    python知识点100篇系列(11)-浮点数四舍五入的两种方法

    中的round函数对浮点数进行四舍五入的规则:参数ndigits 不为 0 的情况如果保留位数的后一位小于等于 4,则舍去如果保留位数的后一位等于 5,且该位数后面没有数字,则不进位如果保留位数的最后一位等于...5,且该位数后面有数字,则进位如果保留位数的最后一位大于等于 6 ,则进位参数ndigits 为 0 或 None 的情况如果保留位数的后一位小于等于 4,则舍去如果保留位数的后一位等于 5,且后面没有数字...;def round2(): import decimal # 修改舍入方式为四舍五入 decimal.getcontext().rounding = "ROUND_HALF_UP"...x = "0.525" x1 = decimal.Decimal(x).quantize(decimal.Decimal("0.00")) print(f"{x} 的四舍五入为 {x1}")...y = "5.5" y1 = decimal.Decimal(y).quantize(decimal.Decimal("0")) print(f"{y} 的四舍五入为 {y1}")round2

    47110

    DeepSeek 量化压缩实战:INT8 精度保持方案详解

    随着神经网络的兴起,研究人员开始探索如何将量化应用于神经网络模型,以降低计算复杂度和存储需求。早期的量化方法主要集中在对权重参数进行简单的截断或舍入操作,但这些方法往往会导致较大的精度损失。...# 量化参数初始化示例代码import numpy as np# 假设 model_weights 是模型的权重参数model_weights = np.random.randn(1000, 1000)...安装相关库:使用 pip 安装深度学习框架(如 TensorFlow 或 PyTorch)以及其他必要的库,如 numpy、matplotlib 等。...= tfmot.quantization.keras.quantize_scope# 定义量化配置quantize_config = tfmot.quantization.keras.Default8BitQuantizeConfig...()# 对模型进行量化注解quantized_model = quantize_annotate(model)# 定义量化具体实现with quantize_scope(): quantized_model

    1.3K20

    【C#】Excel舍入函数Round、RoundUp、RoundDown的C#版

    本人在C#中进行小数舍入的时候常常会怀念Excel中的Round、RoundUp、RoundDown这几个函数,原因就是后者“接地气”,比较符合俺小老百姓的舍入要求,啥“银行家舍入法”就让银行家用去吧。...今儿有空,就把它实现了一下,先温习一下这几个Excel函数的功能: Round(value, digits) 将value按四舍五入法进行舍入,保留digits位小数;当digits为负时,在小数点左侧进行舍入...RoundUp(3111, -2) = 3200 RoundDown(value, digits) 按靠近 0 的方向,将value向下舍入,保留digits位小数;当digits为负时,在小数点左侧进行舍入...和Floor方法(下称C/F)只能取整,所以先根据要保留的位数,乘除得到可供C/F方法发挥的新值,然后就可以利用C/F得到舍入后的值,再乘/除回去,得到最终结果。...decimal类型的原生方法,减少没必要的数学运算。

    2.3K20

    深入理解计算机系统(2.8)---浮点数的舍入,Java中的舍入例子以及浮点数运算(重要)

    这四种舍入方式都不难理解,其中向偶数舍入就是向最靠近的偶数舍入,比如将1.5舍入为2,将0.1舍入为0。而向零舍入则是向靠近零的值舍入,比如将1.5舍入为1,将0.1舍入为0。...对于向上舍入来说,则是往大了(也就是向正无穷大)舍入的意思,比如将1.5舍入为2,将-1.5舍入为-1。而向下舍入则与向上舍入相反,是向较小的值(也就是向负无穷大)舍入的意思。    ...这里需要提一下的是,除了向偶数舍入以外,其它三种方式都会有明确的边界。这里的含义是指这三种方式舍入后的值x'与舍入之前的值x会有一个明确的大小关系,比如对于向上舍入来说,则一定有x 的舍入规则是在原来的值是舍入值的中间值时,采取向偶数舍入,在二进制中,偶数我们认为是末尾为0的数。...而倘若不是这种情况的话,则一般会有选择性的使用向上和向下舍入,但总是会向最接近的值舍入。其实这正是IEEE采取的默认的舍入方式,因为这种舍入方式总是企图向最近的值的舍入。

    1.9K20
    领券