基于FPGA的数字信号处理(14)--定点数的舍入模式(5)向上取整ceil

文章总目录点这里:《基于FPGA的数字信号处理》专栏的导航与说明


1、前言

在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式:向上取整ceil。

2、10进制数的ceil

ceil:也叫 向上取整向正无穷方向取整。它的舍入方式是数据往正无穷的方向,舍入到最近的整数,比如1.75 ceil到2,-0.25 ceil到0等。以-2到1.75之间的16个数据(步长0.25)为例,它们的ceil结果是这样的:

从上图可以看到:

  • 正数的ceil,分为两个部分:

    • 小数部分不为0时就是把小数部分(或者约定精度外的部分)丢掉然后加1。例如1.5 >> 1>> 1+1 >> 2,0.5 >> 0 >> 0 +1 >> 1 等
    • 小数部分为0时就是把小数部分(或者约定精度外的部分)丢掉。例
### 解决方案 为了实现 `ant-design-vue` 的数字输入框向上取整的功能,可以自定义处理函数来控制数值的变化逻辑。具体来说,在监听到输入变化时,通过 JavaScript 提供的 Math.ceil 方法对输入值进行处理。 #### 自定义 InputNumber 组件行为 在 Vue 3 和 Composition API 下面创建一个名为 `CeilInputNumber.vue` 的新组件: ```vue <template> <a-input-number :value="ceilValue" @change="handleChange"/> </template> <script setup> import { ref, watch } from 'vue'; const props = defineProps({ value: { type: Number, default: null } }); // 定义内部使用的变量 ceilValue 并初始化为传入的 prop 值 let ceilValue = ref(props.value); watch(() => props.value, (newValue) => { // 当父级传递的新值发生变化时更新本地状态 ceilValue.value = newValue !== undefined && newValue !== null ? Math.ceil(newValue) : null; }); function handleChange(value) { // 处理改变事件并应用向上取整操作 const updatedValue = value === undefined || value === '' ? null : Math.ceil(Number(value)); // 更新本地状态以及通知父组件新的值 ceilValue.value = updatedValue; emit('update:value', updatedValue); } // 创建emit对象用于向上传递事件 const emit = defineEmits(['update:value']); </script> ``` 此代码片段展示了如何构建一个新的封装好的 `<a-input-number>` 输入控件实例,该实例会在每次更改时自动调用 `Math.ceil()` 函数将任何浮点数转换为其最接近的大于等于它的整数[^1]。 #### 使用 CeilInputNumber 组件 要使用这个定制化的组件,只需像平常一样导入它,并将其放置在模板中的适当位置即可。确保已经按照说明正确安装和配置了 Ant Design Vue 库及其样式资源[^2]。 ```html <!-- ParentComponent.vue --> <template> <!-- ...其他HTML结构... --> <CeilInputNumber v-model:value="numberField"></CeilInputNumber> <!-- ...更多HTML内容... --> </template> <script setup> import CeilInputNumber from './components/CeilInputNumber.vue'; import { ref } from 'vue'; let numberField = ref(0); // 初始化默认值为零或其他所需初始值 </script> ``` 这样就可以实现在用户交互过程中始终显示经过向上取整后的结果给最终用户的体验了。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独的单刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值