请问代码哪里有问题,不考虑循环小数,小数最多有9位。
计算分子的do while循环有问题。
while ((long int)a % i == 0) {
a /= i;
c--;
}
你的算法实现思想是没问题的。
计算机能力限制了你。
1.尽可能的升级你的数据类型长度,double 变成 long double(长度取决于编译系统,系统), long int 变成 long long
2.但是由于double能保存的有效数长度有限,会变成科学计数法.
综上所述你这个算法只能 处理有效位数比较小的数。
建议 把整数部分和小数部分 分开作为整形输入,,然后整个算法采用整形数据,,应该能实现你的需求。
(整形只会溢出,不会丢失精度)