基于JavaScript实现PDF中啤酒售价的自定义舍入规则需求求助
解决PDF表单中的啤酒售价舍入问题
嘿,别担心,我完全理解你现在的处境——作为非开发人员要写PDF里的JavaScript代码确实让人头大,咱们一步步来搞定这个价格舍入的问题!
首先纠正一下你之前代码里的小问题:slice是字符串的处理方法,不能直接用在数值上,而且你的用法也没法正确提取我们需要的价格小数部分。咱们换个更可靠的方式来处理数值拆分和规则判断。
完整解决方案代码(带详细注释)
// 1. 获取计算后的售价字段值,并确保转换为数值类型(避免字符串导致的计算错误) var flSellCalc = Number(this.getField("FLSellCalc").value); // 2. 拆分价格的整数部分和小数部分 var integerPart = Math.floor(flSellCalc); // 提取整数部分,比如5.19的整数部分是5 var decimalPart = flSellCalc - integerPart; // 提取小数部分,比如5.19的小数部分是0.19 var finalPrice; // 3. 根据你的定价规则判断并计算最终售价 if (decimalPart >= 0 && decimalPart <= 0.19) { // 规则1:小数部分在00-19区间 → 整数部分减1,加上0.99 finalPrice = (integerPart - 1) + 0.99; } else if (decimalPart >= 0.20 && decimalPart <= 0.69) { // 规则2:小数部分在20-69区间 → 整数部分加1,加上0.09 finalPrice = (integerPart + 1) + 0.09; } else if (decimalPart >= 0.70 && decimalPart <= 0.99) { // 规则3:小数部分在70-99区间 → 整数部分不变,加上0.99 finalPrice = integerPart + 0.99; } // 4. 将计算好的最终售价赋值给目标字段(这里假设你要放到"FLSellFinal"字段,可根据实际修改字段名) this.getField("FLSellFinal").value = finalPrice;
规则验证(对应你的示例)
- 示例1:5.19 → 整数部分5,小数0.19 → 触发规则1 →
5-1+0.99 = 4.99,符合要求 - 示例2:21.20 → 整数部分21,小数0.20 → 触发规则2 →
21+1+0.09 = 22.09,符合要求 - 示例3:102.76 → 整数部分102,小数0.76 → 触发规则3 →
102+0.99 = 102.99,符合要求
额外说明
- 如果
FLSellCalc的数值是整数(比如10.00),小数部分为0,会触发规则1,最终价格为9.99,完全符合你的定价体系 - 代码里的目标字段
FLSellFinal可以替换成你实际需要显示最终售价的字段名 - 所有计算都是基于数值类型,避免了字符串处理可能出现的异常(比如价格带逗号分隔符的情况)
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

