acm之poj题库1001方法

时间:2022-07-14 13:29:50

题目所言是银行等不能用四舍五入等影响精度的方法来计算的情况,是为提出背景。
因此需要特殊的编写。
这里使用了好几种方法才找到一个合适的方法。
因为C++或者C缺乏类库,又跟底层关联太大,缺乏常用的类库,在写算法过程中发生了太多问题。
目前C++版本的算法:
1 确定小数点的位置,也就是先把带有小数点的数字转为整数(必然是底数)0-99.999
2 将整数按照由低到高排列,数组中下标较小的位置存储整数较低位的数字
3 区分指数的情况 若指数为0 则返回1
4 将当前整数存储入结果数组中
5 分别用两个数组存储两个乘数,计算结果
6 若未曾达到指数次数,继续运算
7 判断何时输出小数点

使用java的话,java有好用的类库。
由于具有大数运算的类库,可以直接使用。
这个地方并不是java的底层实现与C++不一样,而是java将所需要的进行了封装。
故可很方便的完成任务(使用java的BigDecimal)