您的位置:首页 > 编程语言 > Java开发

ACM中用Java水高精度需要注意的2个地方

2012-01-10 01:46 295 查看
java中的 bigdecimal 和 biginteger 实在是太好用了,比起自己死活用c++敲高精度好得多。
但是一般来说遇到,acmer会遇到2个问题:
格式化输出问题。
网上一大堆介绍用 numformat 和 decimalformat 格式化输出的文章,但是用那2个类格式化输出,谈何容易。所以对于用开 c/c++ 的 acmer 来说,用java中的 sprintf 吧。
代码:
system.out.printf("%4d", i);
小数点输出问题。话说这个用c++解决也不是一件简单问题,对于 biginteger or bigdecimal ,一般是转化为 string,再转化为 char[] 进行处理。使用的方法是:
biginteger sum = new biginteger("0");
char[] temp = sum.tostring().tochararray();
其实,bigdecimal 里面还有一个函数 toplainstring() ,转化而成的 string 就是用普通计数法的,不会考虑用科学计数法的。所以对于 bigdecimal 的转化用:
bigdecimal obj = new bigdecimal("0.00000001");
char[] out = obj.toplainstring().tochararray();
用java水高精度,肯定要学一点点java的语法的。虽然eclipse的语法纠正很智能,那个“.”后面弹出来的函数选择框也非常的爽,不过一点点的java基本语法还是需要的。所以推荐一篇文章: http://www.cnblogs.com/bless/archive/2008/11/25/1341003.html java作为编程语言里面最多人用的语言之一,我觉得,还是应该认真学习下才好。

======================================================

在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定
这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: