systemVerilog - 圆形实型

问题描述 投票:1回答:1

在systemVerilog中舍入实际类型的最佳方法是:

情况正面:如果fraction >= 0.5 ---> round返回“整数部分”+ 1(例如4.5 ---> 5),如果fraction < 0.5 ---> round返回“整数部分”(例如4.2 ---> 4) )

案例否定:如果fraction >= 0.5 ---> round返回“整数部分”-1(例如-4.5 ---> - 5),如果fraction < 0.5 ---> round返回“整数部分”(例如-4.2 - - > -4)

rounding system-verilog
1个回答
1
投票

IEEE Std 1800-2012 LRM很好地描述了舍入实数到整数。

IEEE Std 1800-2012§6.12.2转换

实数应通过将实数四舍五入到最接近的整数而不是截断它来转换为整数。当实数被分配给整数时,将发生隐式转换。如果实数的小数部分恰好为0.5,则应从零开始舍入。

IEEE Std 1800-2012§20.5转换函数

$rtoi通过截断实数值将实数值转换为整数类型(例如,123.45变为123)。 $rtoi不同于将实数值转换为整数或其他整数类型,因为转换将执行舍入而不是截断。直接将实数值分配给整数类型也将舍入而不是截断。

根据LRM,int_val = 4.5int_val = int'(4.5)都将变为5.而int_val = -4.5int_val = int'(-4.5)都将变为-5。

根据模拟器的不同,直接分配与铸造可能会有不同的性能。我认为套管是完善的,因为对于任何人来说,检查代码和模拟器都更明确。加上铸造可以更好地控制钻头宽度。

© www.soinside.com 2019 - 2024. All rights reserved.