Hoe rond ik op een elegante manier een float af op een gegeven aantal significante cijfers?
Mijn huidige oplossing is iets als: (baggercode, niet op letten... Ik heb elke stap uitgeschreven om 't begrijpelijk te houden)
Dit werkt prima natuurlijk, maar is erg weinig elegant. Is er een mooiere oplossing?
Mijn huidige oplossing is iets als: (baggercode, niet op letten... Ik heb elke stap uitgeschreven om 't begrijpelijk te houden)
code:
1
2
3
4
5
6
7
8
| float f = 0.06235555; int s = 3; //aantal significante cijfers nodig float logf = log10(f); // -1.2 int logf2 = floor(logf); // -2 float f2 = f / pow(10,logf2); // 1 cijfer voor komma, dus 6.235555 f2 *= pow(10,s-1) // s cijfers voor komma, dus 623.5555 f2 = round(f2) * pow(10,logf2); //klaar |
Dit werkt prima natuurlijk, maar is erg weinig elegant. Is er een mooiere oplossing?