AWS AppSync VTL浮点数被向下取整问题求解
解决AWS AppSync VTL解析器整数取整问题
不用Lambda就能解决,核心是让VTL执行浮点运算而非整数运算:
- 问题根源:VTL中所有操作数为整数时,除法会自动执行整数除法(向下取整),导致结果丢失小数部分。
- 解决方案:在计算时引入至少一个浮点型操作数,强制运算转为浮点模式。
修改后的VTL代码示例:
#set( $result = $ctx.source.total * 100.0 / 365000 ) $result
这里把100改为100.0,让整个运算以浮点型执行,计算5000 * 100.0 / 365000就能得到1.36986...的原始浮点结果。
如果需要保留固定小数位数(比如两位),可以结合$util.math.round()处理:
#set( $rawResult = $ctx.source.total * 100.0 / 365000 ) #set( $result = $util.math.round($rawResult * 100) / 100.0 ) $result
这样最终结果会四舍五入为1.37(可根据需求调整小数位数)。
内容的提问来源于stack exchange,提问作者leepowell
相关产品推荐
相关产品推荐

