关于STM32H753(ARM Cortex-M7)FPU舍入模式的疑问咨询
ARM Cortex-M7 FPSCR寄存器Rmode位与FPU舍入模式解析
ARM Cortex-M7的FPSCR寄存器里的Rmode位,核心作用就是配置FPU执行浮点运算时的舍入策略——毕竟大部分浮点运算没法得到完全精确的结果,必须通过舍入把结果适配到浮点数能表示的范围内。
下面直接拆解你疑问的几种舍入模式:
就近舍入(默认模式):你已经理解,就是舍入到最接近的可表示值。如果结果刚好卡在两个值的中间(比如1.5),就舍入到末尾为偶数的那个值(1.5→2,2.5→2),这种模式的统计误差最小,日常用得最多。
向零舍入:简单说就是直接截断小数部分,只保留整数部分,不管正负。比如1.9→1,-1.9→-1,相当于只取绝对值更小的方向,把所有小数位直接丢掉,也叫截断舍入。
向正无穷大舍入:不管原数正负,都往数值更大的方向舍入。正数的话就是向上取整(比如1.1→2),负数的话是往0的方向靠(比如-1.1→-1,因为-1比-1.1大)。
向负无穷大舍入:和向正无穷完全相反,往数值更小的方向舍入。正数向下取整(1.9→1),负数往远离0的方向走(-1.1→-2)。
另外提一句,Rmode是FPSCR的第22-23位,不同编码对应不同模式:
00:就近舍入01:向正无穷大舍入10:向负无穷大舍入11:向零舍入
内容的提问来源于stack exchange,提问作者Guillaume Petitjean
相关产品推荐
相关产品推荐

