获取double变量的小数部分并将其转换为char数组?

时间:2016-06-27 22:40:03

标签: c++ double precision

我正在做一个小库,能够用非常大的数字进行操作,现在我正试图实现它们的小数部分。

要生成所述数字,我需要一个双数来将其转换为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)时,没有垃圾数字。

0 个答案:

没有答案