除法保留小数点后16位以上,如:pai 。应该如何做?

aleng18 2003-07-04 03:59:09
用双精度除法,只能保留小数点后16位,
...全文
159 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangtaylor 2003-07-09
  • 打赏
  • 举报
回复
旺盛的精力啊。pf
whyxx 2003-07-09
  • 打赏
  • 举报
回复
不好意思,上面写错了,应该是这样的
double a = 2.0;
double b = 3.0;
BigDecimal temp = new BigDecimal(a/b);
temp = temp.setScale(16, BigDecimal.ROUND_HALF_UP);
double c = temp.doubleValue();

whyxx 2003-07-09
  • 打赏
  • 举报
回复
的确也是,
xiaohaiz 2003-07-09
  • 打赏
  • 举报
回复
谁能无聊过我?这种代码都给写测试样例了。 :)
whyxx 2003-07-09
  • 打赏
  • 举报
回复
主要是无聊
xiaohaiz 2003-07-07
  • 打赏
  • 举报
回复
to 楼上,对不起,并不是和你抬扛,但是测试结果确实不对.你的错误出在valueOf参数传递a/b已经是0了,在这个地方精度就丢掉了.下面是证明:
public class TestDivide extends TestCase {
public TestDivide(String name) {super(name);}

public void testDivide() {
double a = 2.0;
double b = 3.0;
BigDecimal temp = BigDecimal.valueOf((long)(a/b), 16);
double c = temp.doubleValue();
assertEquals(0.6666666666666667D, c, 0.0000000000000001D);
}
}
运行测试的结果:
===========================================
.F
Time: 0.011
There was 1 failure:
1) testDivide(TestDivide)junit.framework.AssertionFailedError: expected:<0.6666666666666667> but was:<0.0>
at TestDivide.testDivide(TestDivide.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.intellij.rt.execution.junit.TextTestRunner.main(TextTestRunner.java:12)

FAILURES!!!
Tests run: 1, Failures: 1, Errors: 0
whyxx 2003-07-06
  • 打赏
  • 举报
回复
当然可以这样用,上面的代码我测试过的
xiaohaiz 2003-07-04
  • 打赏
  • 举报
回复
楼上错了, valueOf(long, int) 除法能这么用吗?
你的结果是多少?
0.0000000000000000

应该这样:
BigDecimal r = new BigDecimal(2.0).divide(new BigDecimal(3.0), 17, BigDecimal.ROUND_HALF_UP);
System.out.println(r);
结果是:
0.66666666666666667
whyxx 2003-07-04
  • 打赏
  • 举报
回复
double a = 2.0;
double b = 3.0;
BigDecimal temp = BigDecimal.valueOf(a/b, 16);
double c = doubleValue();
xiaohaiz 2003-07-04
  • 打赏
  • 举报
回复
使用 BigDecimal (java.math.BigDecimal) 相除.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧