作者hahakyo (大豪院邪鬼)
看板java
标题[问题] 取整数问题[会自动进位]
时间Thu Oct 23 12:30:53 2008
如题
举例而言
double d1 = 4.9999; //想要抓出整数位4 可利用
int c1 = (int)d1; //如此c1可得我想要的值4
但是. 当小数点位数太多时 例如 d1=4.99999999999999999999;
那麽以我上面的写法 得到的数值会变5 也就是自动进位了
实际上 我要处理的数据大概是这样的形式: d2=0.1234567899999999999999999
我要抓出第8位数.也就是8这个数[前几位抓到也没关系]
我先把d2乘以10的8次方 变成12345678.99999999999999999
想抓出整数12345678
但至今试过许多方法.仍然会取成12345679
想请教一下 该如何处理这样的问题呢?
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.14.44
1F:推 LPH66:Math.floor()? 10/23 12:32
2F:→ hahakyo:to楼上 一样呢 後面9太多 他还是会自动进位 10/23 12:34
3F:推 drinks:用BigDecimal运算? 10/23 12:41
TO楼上
我有试着用过
虽然BigDecimal可以在取比较精准的位数下进行加 减 乘 除的运算
但似乎也无法使用什麽方法将我要的整数位取出来
甚至最後输出前,转成DOUBLE.还是一样9会自动进位
4F:推 tatibana31:用String暴力解?(逃) 10/23 15:01
很神奇的
我将d1转string.仍然会自动进位
※ 编辑: hahakyo 来自: 140.112.14.44 (10/23 16:24)
5F:推 fuQQ:失真法 d1=d1-0.5; 但这只是转移问题成如何判断"过多" @@ 10/23 17:03
6F:推 MonyemLi:自己定义个class 整数、小数拆开作,都用整数处理呢 10/24 00:07