如何使用Jolt对十进制值进行左右补零格式化?
十进制数字格式化:固定长度补零实现
需求概要
- 整数部分强制保留10位,长度不足时左侧补0
- 小数部分强制保留4位,长度不足时右侧补0
- 输入为空字符串或
null时,输出标准全零格式:0000000000.0000
示例
输入(JSON):
[ { "field1": "875.45", "field2": "" } ]
输出(JSON):
[ { "field1": "0000000875.4500", "field2": "0000000000.0000" } ]
实现方案
Python 版本
def format_decimal(input_str): # 处理空值或空字符串 if not input_str: return "0000000000.0000" # 拆分整数与小数部分 if '.' in input_str: integer_part, decimal_part = input_str.split('.', 1) else: integer_part = input_str decimal_part = '' # 补零处理:整数左补0到10位,小数右补0到4位(超过4位则截断) formatted_integer = integer_part.zfill(10) formatted_decimal = decimal_part.ljust(4, '0')[:4] return f"{formatted_integer}.{formatted_decimal}" # 测试示例数据 test_data = [{"field1": "875.45", "field2": ""}] formatted_result = [] for item in test_data: processed_item = {k: format_decimal(v) for k, v in item.items()} formatted_result.append(processed_item) print(formatted_result)
JavaScript 版本
function formatDecimal(inputStr) { // 处理空值或空字符串 if (!inputStr) { return "0000000000.0000"; } // 拆分整数与小数部分,小数部分默认空字符串 const [integerPart, decimalPart = ''] = inputStr.split('.'); // 补零处理:整数左补0到10位,小数右补0到4位(超过4位则截断) const formattedInteger = integerPart.padStart(10, '0'); const formattedDecimal = decimalPart.padEnd(4, '0').slice(0, 4); return `${formattedInteger}.${formattedDecimal}`; } // 测试示例数据 const testData = [{"field1": "875.45", "field2": ""}]; const formattedResult = testData.map(item => { const processed = {}; for (const key in item) { processed[key] = formatDecimal(item[key]); } return processed; }); console.log(formattedResult);
注意事项
- 如果输入整数部分长度超过10位,上述代码会保留原长度(例如
123456789012.34会输出123456789012.3400),若需强制截断为10位,可修改逻辑取整数部分的最后10位或前10位。 - 若需对超过4位的小数进行四舍五入而非截断,可引入数值处理逻辑(如Python的
decimal模块、JavaScript的toFixed方法),但需注意浮点数精度问题。
内容的提问来源于stack exchange,提问作者Deshna
相关产品推荐
相关产品推荐

