真正的计算器 高精度计算单独篇
2025-01-045943
AI 快速预览详细
这篇文章介绍了一个高精度计算器,它可以实现高精度的加减运算,并直接输出十进制数。通过模拟手算的方法,解决了系统计算器输出科学记数法的问题。文章详细介绍了如何处理小数点不精准和最高位有0的bug,并提供了相应的代码实现。
|
前言: 这个帖子满满干货,不在评论区吱一声还好意思那文件?()这次带来的高精度可不是一般的。系统的计算机输出的是科学寄数法,但同样的算式我做的高精度可以直接输出十进制的数。(这次和之前的不一样,不需要手动转换) 上才艺: ![]() ![]() 这里面的那个小数点不精准的bug貌似只有这个算式会出现。 ![]() 最后一个最高位有0的bug正式版(我发的版本)修复了。除法还没做。打算除法既输出小数(循环小数也可以输出!),又可以输出对应的分数。所以鼓励一下把。 加减: 这个办法是我在进行排除废料()的时候想到的。首先,这是2个变量,表示了2个数字。 ![]() 我们把他们数位统一。先看整数部分。14和11450。那么我们知道,数字前面加上0,大小不变。我们就加上: ![]() 然后是小数部分。我们也知道,小数末尾加上0大小也不变,所以我们加上: ![]() 然后如果我们是算加法,就把两个列表的每一项相加,放入一边,减法就是相减。 加: ![]() sum列表就是结果啦。这里的比较特殊,直接就是结果。来看看不一样的: ![]() 那么我们就要进位!! ![]() 这就正常了。所以你们发现了吗,其实高精度计算是按照我们手算的办法来计算的,乘法如此,加减如此。这就是编程里的模拟法(扯远了) 这个也很特殊: ![]() ![]() 我们需要把多余的0去掉才是平常看到的结果。至此,加法ok了。 减: ![]() (n1-n2 还有一项是-4.忘写了)look,这里有负数,我们需要退位。 ![]() 这就好了。如果开头或结尾有0就去掉。至此,完毕! 代码: ![]() 进位 ![]() 退位 ![]() 主体1/5 ![]() 主体2/5 ![]() 主体3/5 ![]() 主体4/5 ![]() 主体5/5 附件: 计算器.zip |
评分
-
参与人数 3 贡献 +5 经验值 +5 创造力 +11 收起 理由
wKv37UIT47zJ0
+ 5 + 5 + 5
dingding960
+ 5 GOOD
凉皮周
+ 1


























)))巨佬巨佬,我想要乘法也有分数~~~
)))太强辣,巨佬能教教我嘛~~~
)))巨佬我有刚签到拿的1创造力,教教我~~~
hhhhhh
999