Du bör nog använda en string, du kan inte spara detta nummer varken som en int, float eller double. Float/double sparar inte tal exakt.
Du kan inte börja ett nummer med en 0:a om du inte själv skriver ut nollan (annars tolkas det som ett oktalt tal). Därför kan du lika gärna använda en string.
Gjorde detta test:
#include <iostream>
#include <iomanip>
int main()
{
float f = 0.70123456789f;
double d = 0.70123456789;
//int i = 70123456789;
std::cout << std::setprecision (11) << f << std::endl;
std::cout << std::setprecision (11) << d << std::endl;
//std::cout << i << std::endl;
return 0;
}
Detta skriver ut:
0.70123457909
0.70123456789
Du kan ta bort kommentarerna framför int i, men då ger gcc detta fel:
test.cpp: In function `int main()':
test.cpp:8: error: integer constant is too large for "long" type
För att fixa detta kan du använda __int64 (VC++) eller long long (gcc), men jag rekommenderar att du använder string om du inte absolut måste använda något annat.