Skip to content

FloatToStr

FloatToStr

Description

Convert a float to a normalized decimal string.

Parameters

Name Direction Description
value in Float to convert

Usage example (from documentation)

  Str text = FloatToStr(&value);

Returns

Decimal string representation without scientific notation.

Usage example (Cross-references)

Usage examples (Cross-references)
    
    static Str FloatFmtToDecimalStr(Float *value, u32 precision, bool has_precision) {
        Str canonical = FloatToStr(value);
    
        if (!has_precision) {
    }
    
    Str FloatToStr(Float *value) {
        Str digits = StrInit();
        Str result = StrInit();
    
        FloatNegate(&value);
        text = FloatToStr(&value);
    
        bool result = strcmp(text.data, "-12.5") == 0;
        StrDeinit(&text);
        FloatAbs(&value);
        text   = FloatToStr(&value);
        result = result && (strcmp(text.data, "12.5") == 0);
    
        FloatAdd(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, "1.23") == 0;
    
        FloatAdd(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, FLOAT_TEST_VERY_LARGE_THREES) == 0;
    
        FloatAdd(&result_value, &a, b);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "2") == 0;
        StrDeinit(&text);
        FloatAdd(&result_value, &a, whole);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.25") == 0);
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.25") == 0);
        StrDeinit(&text);
        FloatAdd(&result_value, &a, -1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "0.25") == 0);
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 0.75f);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "2") == 0);
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 0.75);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "2") == 0);
    
        FloatSub(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, "-0.5") == 0;
    
        FloatSub(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, FLOAT_TEST_VERY_LARGE_TWOS) == 0;
    
        FloatSub(&result_value, &a, b);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "5") == 0;
        StrDeinit(&text);
        FloatSub(&result_value, &a, whole);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.5") == 0);
        StrDeinit(&text);
        FloatSub(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.5") == 0);
        StrDeinit(&text);
        FloatSub(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "7.5") == 0);
        StrDeinit(&text);
        FloatSub(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "5") == 0);
    
        FloatMul(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, "-2.5") == 0;
    
        FloatMul(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, FLOAT_TEST_VERY_LARGE_TWOS) == 0;
    
        FloatMul(&result_value, &a, b);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "3") == 0;
        StrDeinit(&text);
        FloatMul(&result_value, &a, whole);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3") == 0);
        StrDeinit(&text);
        FloatMul(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3") == 0);
        StrDeinit(&text);
        FloatMul(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "-3") == 0);
        StrDeinit(&text);
        FloatMul(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "0.75") == 0);
    
        FloatDiv(&result_value, &a, &b, 3);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, "0.125") == 0;
    
        FloatDiv(&result_value, &a, &b, 0);
        text = FloatToStr(&result_value);
    
        bool result = strcmp(text.data, FLOAT_TEST_VERY_LARGE_ONES) == 0;
    
        FloatDiv(&result_value, &a, b, 1);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "3") == 0;
        StrDeinit(&text);
        FloatDiv(&result_value, &a, whole, 1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "2.5") == 0);
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 3u, 1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "2.5") == 0);
        StrDeinit(&text);
        FloatDiv(&result_value, &a, -3, 1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "-2.5") == 0);
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 0.5f, 1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "15") == 0);
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 0.5, 1);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "15") == 0);
        z = "1234567890.012345";
        StrReadFmt(z, "{}", dec);
        dec_text = FloatToStr(&dec);
        success  = success && (ZstrCompare(dec_text.data, "1234567890.012345") == 0);
        z = "1.234567e+04";
        StrReadFmt(z, "{e}", sci);
        sci_text = FloatToStr(&sci);
        success  = success && (ZstrCompare(sci_text.data, "12345.67") == 0);
        z = "-0.00125";
        StrReadFmt(z, "{}", neg);
        neg_text = FloatToStr(&neg);
        success  = success && (ZstrCompare(neg_text.data, "-0.00125") == 0);
    
        Float value = FloatFrom(42);
        Str   text  = FloatToStr(&value);
    
        bool result = strcmp(text.data, "42") == 0;
    
        Float value = FloatFrom(-42);
        Str   text  = FloatToStr(&value);
    
        bool result = strcmp(text.data, "-42") == 0;
        Int   integer = IntFromStr("12345678901234567890");
        Float value   = FloatFrom(&integer);
        Str   text    = FloatToStr(&value);
    
        bool result = strcmp(text.data, "12345678901234567890") == 0;
    
        Float value = FloatFromStr("-123.45");
        Str   text  = FloatToStr(&value);
    
        bool result = strcmp(text.data, "-123.45") == 0;
    
        Float value = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES);
        Str   text  = FloatToStr(&value);
    
        bool result = strcmp(text.data, FLOAT_TEST_VERY_LARGE_ONES) == 0;
    
        Float value = FloatFromStr("1.2300e3");
        Str   text  = FloatToStr(&value);
    
        bool result = strcmp(text.data, "1230") == 0;
        Float clone    = FloatClone(&original);
        Float expected = FloatFromStr("-12.5");
        Str   text     = FloatToStr(&clone);
    
        FloatAbs(&original);
Last updated on