Ik werk momenteel met CGAL, een template library voor geometrische datatypes en datastructuren. Nu wil ik mijn data uit zo'n datastructuur wegschrijven naar een stream, en gelukkig biedt die daar ondersteuning voor middels de bekende << en >> iostream overloads.
Uiteindelijk bestaat de weggeschreven data uit doubles, waarin de coordinaten van punten uitgedrukt worden. Echter, het is absoluut noodzakelijk dat ik de coordinaten zonder precisieverlies weg kan schrijven; zelfs bij hele kleine verschillen kan mijn algoritme al vastlopen als ik de volgende keer de data weer inlees.
Dus, wie kan me vertellen hoe ik de stream moet configureren om doubles zonder precisieverlies weg te schrijven? Kan het uberhaupt?
Ik heb al gekeken naar het gebruik van de setprecision en scientific manipulators, maar ik vraag me af hoeveel decimalen ik dan als precision in moet stellen? Volgens <limits> kan een double tot 15 decimalen precisie aan, maar dat garandeerd dan toch alleen dat de 15 weggeschreven decimalen ook echt de 15 decimalen zijn die je aan zo'n double hebt toegekend? (M.a.w. er zijn dus ook nog bits die niet weggeschreven worden).
Wie weet raad?
Uiteindelijk bestaat de weggeschreven data uit doubles, waarin de coordinaten van punten uitgedrukt worden. Echter, het is absoluut noodzakelijk dat ik de coordinaten zonder precisieverlies weg kan schrijven; zelfs bij hele kleine verschillen kan mijn algoritme al vastlopen als ik de volgende keer de data weer inlees.
Dus, wie kan me vertellen hoe ik de stream moet configureren om doubles zonder precisieverlies weg te schrijven? Kan het uberhaupt?
Ik heb al gekeken naar het gebruik van de setprecision en scientific manipulators, maar ik vraag me af hoeveel decimalen ik dan als precision in moet stellen? Volgens <limits> kan een double tot 15 decimalen precisie aan, maar dat garandeerd dan toch alleen dat de 15 weggeschreven decimalen ook echt de 15 decimalen zijn die je aan zo'n double hebt toegekend? (M.a.w. er zijn dus ook nog bits die niet weggeschreven worden).
Wie weet raad?