print float simple

Run Settings
LanguageC++
Language Version
Run Command
#include <stdio.h> #include <stdint.h> #include <math.h> void print_upper(double v, size_t i) { if(i == 0 || v >= 1) { print_upper(v / 10, i + 1); putchar('0' + (size_t)fmod(v, 10)); } } void print_lower(double v_raw, size_t c) { bool pdot = false; size_t np = 0; size_t acc = 10; for(size_t i = 0; i < c; ++i) { double v = v_raw * acc; size_t pv = (size_t)fmod(v, 10); if(pv == 0) { np += 1; } else { if(pdot == false) { putchar('.'); pdot = true; } for(size_t j = 0; j < np; ++j) { putchar('0'); } np = 0; putchar('0' + pv); } acc *= 10; } } void print_float(double v) { if(*(uint64_t *)&v & 0x8000000000000000) { putchar('-'); v = -v; } print_upper(v + 0.0005, 0); print_lower(v + 0.0005, 3); } void pf(double v) { print_float(v); putchar('\n'); } int main() { uint64_t negative_zero = 0x8000000000000000; pf(*(double *)&negative_zero); pf(0); pf(-9.1235); pf(-9.1234); pf(5561134); pf(29.9995); pf(700.0); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines