如何实现只打印数字的小数部分?
提取数字小数部分的实现方案
你之前使用的{0:.2f}类固定小数位格式化方法只能输出固定长度的小数,会出现截断长小数、补零短小数的问题,无法适配任意长度的小数输出需求,推荐使用字符串分割的通用方案,适配所有场景:
核心思路
将数字转为字符串格式,按小数点.做分割,取分割后的小数段内容,拼接前缀.即可得到目标输出,不会修改原有小数的位数。
各语言实现代码
Python
def get_decimal_part(num): # 若输入是字符串类型的数字可直接跳过str转换,避免浮点数精度丢失 num_str = str(num) if '.' in num_str: return '.' + num_str.split('.')[1] # 整数输入可按需修改返回值,比如返回'.0'或者空字符串 return '' # 测试用例 test_nums = [100.56, 455.345, 89.5] for n in test_nums: print(get_decimal_part(n))
输出结果:
.56 .345 .5
JavaScript
function getDecimalPart(num) { const numStr = num.toString() if(numStr.includes('.')) { return '.' + numStr.split('.')[1] } return '' } // 测试 const testNums = [100.56, 455.345, 89.5] testNums.forEach(n => console.log(getDecimalPart(n)))
Java
public class DecimalPartUtil { public static String getDecimalPart(double num) { String numStr = String.valueOf(num); if (numStr.contains(".")) { return "." + numStr.split("\\.")[1]; } return ""; } public static void main(String[] args) { double[] testNums = {100.56, 455.345, 89.5}; for (double n : testNums) { System.out.println(getDecimalPart(n)); } } }
注意:如果对精度要求极高,建议直接处理原始输入的字符串格式数字,不要先转成浮点数再处理,避免浮点数精度丢失导致小数部分异常。如果需要固定小数位数,可以先做四舍五入处理后再执行分割逻辑。
内容的提问来源于stack exchange,提问作者Jeedeck Cruz Lapidario
相关产品推荐
相关产品推荐

