Shopify Script Editor中Decimal运算报错问题求助
解决Shopify脚本中Decimal类型除法报错问题
问题根源
Shopify脚本环境使用的是自定义Decimal类(非Ruby标准库的BigDecimal),该类不支持to_f/to_i方法,且直接与整数进行除法运算时会触发内部类型不匹配错误bad decimal operation (0 x 4)。
可行解决方案
方案1:通过字符串中转转换类型
利用Decimal类的to_s方法将其转为字符串,再转成整数/浮点数进行计算:# 先转整数再转浮点数做除法 BOX_PRODUCTS_INT = BOX_PRODUCTS.to_s.to_i BOX_PERCENT = BOX_DISCOUNT / BOX_PRODUCTS_INT.to_f # 或直接转浮点数计算 BOX_PERCENT = BOX_DISCOUNT.to_f / BOX_PRODUCTS.to_s.to_f方案2:统一为Decimal类型运算
将整数类型的BOX_DISCOUNT转为Shopify的Decimal类型,再执行除法:BOX_PERCENT = Decimal.new(BOX_DISCOUNT) / BOX_PRODUCTS部分Shopify脚本环境支持简写
Decimal(BOX_DISCOUNT),可按需测试。方案3:从原始Money对象获取正确数值
直接从Money对象提取可用数值,绕开cents返回的Decimal问题:# 若amount是美元单位的浮点数(如320.0),乘100得到分单位数值 BOX_PRODUCTS = (line_item.line_price.amount * 100).to_i BOX_PERCENT = BOX_DISCOUNT / BOX_PRODUCTS.to_f
验证要点
确保运算时两边数值类型统一,要么都转为Ruby原生的整数/浮点数,要么都使用Shopify的Decimal类型,避免跨类型运算触发内部错误。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

