Java中仅用数学方法分离double变量的整数与小数部分(非字符串/对象)
Java纯数学运算分离double的整数与小数部分
针对你需要将double类型变量a=13.564仅通过数学运算分离为整数部分int b=13和小数转换后的int c=564的需求,以下是具体实现:
代码实现与解释
1. 获取整数部分b
对于正数的double值,直接强制类型转换为int即可自动截断小数部分,得到整数部分:
double a = 13.564; int b = (int) a; // 结果为13
注意:如果变量
a可能为负数,强制转换会向零截断(比如-13.564转int得到-13),若需要向下取整的整数部分,可改用Math.floor(a)后再转int。
2. 获取小数转换后的整数c
先计算出纯小数部分,再乘以1000(对应三位小数转整数),最后用Math.round()处理浮点精度误差后转int:
double decimal = a - b; int c = (int) Math.round(decimal * 1000); // 结果为564
为什么用
Math.round()?因为double的浮点运算可能存在精度偏差,比如13.564 - 13理论上是0.564,但实际计算可能得到0.5639999999999999,直接转int会得到563,round()可以修正这种误差,保证结果正确。
内容的提问来源于stack exchange,提问作者19D4239 M.SAIPRASAD REDDY
相关产品推荐
相关产品推荐

