我正在做一个小库,能够用非常大的数字进行操作,现在我正试图实现它们的小数部分。
要生成所述数字,我需要一个双数来将其转换为char数组。整数部分已完成,但小数部分正是让我挣扎的原因。
看一下这个程序:
double a = 123.123456;
double dec = a - int(a);
while (dec) {
dec *= 10;
cout << int(dec); // Here it just outputs the decimal digit for the sake of simplicity.
dec -= int(dec);
}
起初,我想&#34;好的,这会做到&#34;,但是输出,而不是123456
它是123456000000004451067070476710796356201171875
。
我几乎可以肯定这是因为双数字的精确度,但我真的希望获得123456
部分。
当我向第一个数字添加更多小数时,这个问题更加困难,因为&#34;真正的&#34;数字与&#34;非真实&#34;相交的。
我该怎么办?
修改
当双数字的小数部分为0(如123或123.0或123.00000000)时,没有垃圾数字。