Java中如何提取double类型小数部分并转换为整数?
提取double类型数值小数点右侧部分并转为整数
针对double类型数值(如123.987)提取小数点右侧部分并转为整数,这里提供两种实用方法,同时注意处理double的精度陷阱:
方法一:字符串分割法
将double转为字符串后按小数点分割,提取右侧子串再转整数。这种方法直观,但需处理无小数位的情况:
double num = 123.987; String numStr = String.valueOf(num); int decimalPart = 0; if (numStr.contains(".")) { String[] parts = numStr.split("\\."); // 若小数部分过长,可按需截取长度 decimalPart = Integer.parseInt(parts[1]); } // 此时decimalPart为987
注意:如果数值是整数(如123.0),分割后只有一个元素,需默认返回0。
方法二:BigDecimal精确处理法
由于double存在精度丢失问题(例如123.987实际存储可能是123.98699999999999),用BigDecimal能避免这类问题:
double num = 123.987; BigDecimal bd = new BigDecimal(String.valueOf(num)); // 获取小数部分并移动小数点转为整数 int decimalPart = bd.remainder(BigDecimal.ONE) .movePointRight(bd.scale()) .intValue(); // 结果为987
这种方法适合对精度要求高的场景,能准确处理各种小数位数的情况。
内容的提问来源于stack exchange,提问作者Splilz
相关产品推荐
相关产品推荐

