(1)leetcode 166
首先,这个文章目的不在求解leeetcode 166题,这个题目无外乎就是注意
1.分为整数部分和小数部分的分别求解
2.分数一定是有限小数和无限循环小数。
3.求小数部分按照小学求数的方法*10除以除数,循环小数就是记录从一开始的除数开始的所有余数,当余数开始重合的时候小数开始重合。
4.注意溢出,所有有关溢出的部分至今按long long写。
5.很多解法都没出现过的科学计数法法问题,这是我这个记录的重点。应该是我解法的问题。
(2)科学计数法
在计算的过程中,最后发现用/来计算整数部分时,它会变为科学计数法的形式,以前也一直没有注意这个问题。真是难得的发现,比如:超过某个一定的数,用e的多少次方来表示这个数字,这个表示有好处有坏处。
查了几种方法。
一个就是再输出的时候控制精度。利用cout的格式化输出。
cout.setf(ios_base::fixed,ios_base::floatfield);
一个是小数,控制小数位数。
//控制显示的精度,控制小数点后面的位数
cout << setprecision(7);
另外我发现在leetcode里面,可以利用to_string(a/b),出来的string不是科学计数法的形式,有点治标不治本了。
具体根本原因和怎么解决还需要探讨。