FloatFromStr
Description
Compatibility wrapper for FloatTryFromStr(...).
Success
Returns Parsed floating-point value, or zero on failure.
Failure
Returns a zero-initialised Float on a malformed string, an exponent overflow, or an allocation failure. Use FloatTryFromStr(...) when explicit failure propagation is required.
Usage example (Cross-references)
Usage examples (Cross-references)
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float c = FloatFromStr("-1.23", &alloc.base);
Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float c = FloatFromStr("-1.23", &alloc.base); Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float c = FloatFromStr("-1.23", &alloc.base);
bool result = FloatCompare(&a, &b) == 0; DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float c = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float c = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base); Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float c = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
bool result = FloatLT(&a, &b); DefaultAllocator alloc = DefaultAllocatorInit();
Float large = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float negative_large = FloatFromStr("-" FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float small = FloatFromStr("2.5", &alloc.base);
Float large = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float negative_large = FloatFromStr("-" FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float small = FloatFromStr("2.5", &alloc.base); Float large = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float negative_large = FloatFromStr("-" FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float small = FloatFromStr("2.5", &alloc.base);
bool result = FloatGT(&large, &small); DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("-2", &alloc.base);
Float b = FloatFromStr("0.5", &alloc.base);
Float expected = FloatFromStr("5e-1", &alloc.base);
Float a = FloatFromStr("-2", &alloc.base);
Float b = FloatFromStr("0.5", &alloc.base);
Float expected = FloatFromStr("5e-1", &alloc.base); Float a = FloatFromStr("-2", &alloc.base);
Float b = FloatFromStr("0.5", &alloc.base);
Float expected = FloatFromStr("5e-1", &alloc.base);
bool result = FloatLT(&a, &b); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("12.5", &alloc.base);
Float same = FloatFromStr("12.5", &alloc.base);
Int whole = IntFrom(12, &alloc.base);
Float value = FloatFromStr("12.5", &alloc.base);
Float same = FloatFromStr("12.5", &alloc.base);
Int whole = IntFrom(12, &alloc.base);
Int next = IntFrom(13, &alloc.base); DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float zero1 = FloatFromStr("0", &alloc.base);
Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float zero1 = FloatFromStr("0", &alloc.base);
Float zero2 = FloatFromStr("0", &alloc.base); Float a = FloatFromStr("1.23", &alloc.base);
Float b = FloatFromStr("123e-2", &alloc.base);
Float zero1 = FloatFromStr("0", &alloc.base);
Float zero2 = FloatFromStr("0", &alloc.base); Float b = FloatFromStr("123e-2", &alloc.base);
Float zero1 = FloatFromStr("0", &alloc.base);
Float zero2 = FloatFromStr("0", &alloc.base);
bool result = (float_hash(&a, 0) == float_hash(&b, 0)); DefaultAllocator alloc = DefaultAllocatorInit();
Float pos = FloatFromStr("1.5e3", &alloc.base);
Float neg = FloatFromStr("-1.5e3", &alloc.base);
Float small = FloatFromStr("1.5e2", &alloc.base);
Float pos = FloatFromStr("1.5e3", &alloc.base);
Float neg = FloatFromStr("-1.5e3", &alloc.base);
Float small = FloatFromStr("1.5e2", &alloc.base);
Float zero = FloatFromStr("0", &alloc.base); Float pos = FloatFromStr("1.5e3", &alloc.base);
Float neg = FloatFromStr("-1.5e3", &alloc.base);
Float small = FloatFromStr("1.5e2", &alloc.base);
Float zero = FloatFromStr("0", &alloc.base);
Float one = FloatFromStr("1", &alloc.base); Float neg = FloatFromStr("-1.5e3", &alloc.base);
Float small = FloatFromStr("1.5e2", &alloc.base);
Float zero = FloatFromStr("0", &alloc.base);
Float one = FloatFromStr("1", &alloc.base); Float small = FloatFromStr("1.5e2", &alloc.base);
Float zero = FloatFromStr("0", &alloc.base);
Float one = FloatFromStr("1", &alloc.base);
u64 h_pos = float_hash(&pos, 0); Map(Float, u64) counts = MapInit(float_hash, float_compare, &alloc);
Float k1 = FloatFromStr("3.14", &alloc.base);
Float k2 = FloatFromStr("2.71", &alloc.base);
MapInsertR(&counts, k1, 1u);
Float k1 = FloatFromStr("3.14", &alloc.base);
Float k2 = FloatFromStr("2.71", &alloc.base);
MapInsertR(&counts, k1, 1u);
MapInsertR(&counts, k2, 2u); MapInsertR(&counts, k2, 2u);
Float probe = FloatFromStr("314e-2", &alloc.base); // same value as k1
u64 *got = MapGetFirstPtr(&counts, probe);
Float missing = FloatFromStr("9.99", &alloc.base); Float probe = FloatFromStr("314e-2", &alloc.base); // same value as k1
u64 *got = MapGetFirstPtr(&counts, probe);
Float missing = FloatFromStr("9.99", &alloc.base);
u64 *gone = MapGetFirstPtr(&counts, missing);- In
Float.Type.c:34:
DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("-123.45", &alloc.base);
FloatClear(&value);- In
Float.Type.c:52:
DefaultAllocator alloc = DefaultAllocatorInit();
Float original = FloatFromStr("-12.5", &alloc.base);
Float clone = FloatClone(&original);
Float expected = FloatFromStr("-12.5", &alloc.base);- In
Float.Type.c:54:
Float original = FloatFromStr("-12.5", &alloc.base);
Float clone = FloatClone(&original);
Float expected = FloatFromStr("-12.5", &alloc.base);
Str text = FloatToStr(&clone);- In
Float.Type.c:84:
// a non-trivial three-bit magnitude that exercises the clone-vs-original
// equality check below.
Float original = FloatFromStr("-0.005", &alloc.base);
Float clone = FloatClone(&original); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("1234500e-2", ALLOCATOR_OF(&alloc));
Int result_value = IntInit(ALLOCATOR_OF(&alloc));
Str text = StrInit(ALLOCATOR_OF(&alloc)); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("123.45", ALLOCATOR_OF(&alloc));
Int result_value = IntFrom(99, ALLOCATOR_OF(&alloc)); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("-42", ALLOCATOR_OF(&alloc));
Int result_value = IntFrom(99, ALLOCATOR_OF(&alloc)); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("-123.45", ALLOCATOR_OF(&alloc));
Str text = FloatToStr(&value); alloc.base.retry_limit = 5;
Float value = FloatFromStr("-123.45", ALLOCATOR_OF(&alloc));
ok = float_try_to_str(&text, &value, ALLOCATOR_OF(&alloc)); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, ALLOCATOR_OF(&alloc));
Str text = FloatToStr(&value); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("1.2300e3", ALLOCATOR_OF(&alloc));
Str text = FloatToStr(&value);
bool test_float_from_str_invalid(void) {
WriteFmt("Testing FloatFromStr invalid format handling\n");
DefaultAllocator alloc = DefaultAllocatorInit(); DefaultAllocator alloc = DefaultAllocatorInit();
Float parsed = FloatFromStr("12.3.4", ALLOCATOR_OF(&alloc));
Float value = FloatInit(ALLOCATOR_OF(&alloc));
bool result = !FloatTryFromStr(&value, "12.3.4");
bool test_float_from_str_null(void) {
WriteFmt("Testing FloatFromStr NULL handling\n");
DefaultAllocator alloc = DefaultAllocatorInit(); DefaultAllocator alloc = DefaultAllocatorInit();
Float parsed = FloatFromStr((Zstr)NULL, ALLOCATOR_OF(&alloc));
Float value = FloatInit(ALLOCATOR_OF(&alloc));
bool result = !FloatTryFromStr(&value, (Zstr)NULL);- In
Io.Write.c:639:
Str output = StrInit(&alloc);
bool success = true;
Float exact = FloatFromStr("1234567890.012345", alloc_base);
Float sci = FloatFromStr("12345.67", alloc_base);
Float short_v = FloatFromStr("1.2", alloc_base);- In
Io.Write.c:640:
bool success = true;
Float exact = FloatFromStr("1234567890.012345", alloc_base);
Float sci = FloatFromStr("12345.67", alloc_base);
Float short_v = FloatFromStr("1.2", alloc_base);- In
Io.Write.c:641:
Float exact = FloatFromStr("1234567890.012345", alloc_base);
Float sci = FloatFromStr("12345.67", alloc_base);
Float short_v = FloatFromStr("1.2", alloc_base);
StrAppendFmt(&output, "{}", exact);- In
Float.Math.c:30:
DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("12.5", &alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:54:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.2", &alloc.base);
Float b = FloatFromStr("0.03", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:55:
Float a = FloatFromStr("1.2", &alloc.base);
Float b = FloatFromStr("0.03", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:77:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:78:
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:100:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.25", &alloc.base);
Float b = FloatFromStr("0.75", &alloc.base);
Int whole = IntFrom(2, &alloc.base);- In
Float.Math.c:101:
Float a = FloatFromStr("1.25", &alloc.base);
Float b = FloatFromStr("0.75", &alloc.base);
Int whole = IntFrom(2, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:149:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.5", &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:150:
Float a = FloatFromStr("1.5", &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:172:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_THREES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:173:
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_THREES, &alloc.base);
Float b = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:195:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("5.5", &alloc.base);
Float b = FloatFromStr("0.5", &alloc.base);
Int whole = IntFrom(2, &alloc.base);- In
Float.Math.c:196:
Float a = FloatFromStr("5.5", &alloc.base);
Float b = FloatFromStr("0.5", &alloc.base);
Int whole = IntFrom(2, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:239:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("12.5", &alloc.base);
Float b = FloatFromStr("-0.2", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:240:
Float a = FloatFromStr("12.5", &alloc.base);
Float b = FloatFromStr("-0.2", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:262:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:263:
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES, &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:285:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1.5", &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Int whole = IntFrom(2, &alloc.base);- In
Float.Math.c:286:
Float a = FloatFromStr("1.5", &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Int whole = IntFrom(2, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:329:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1", &alloc.base);
Float b = FloatFromStr("8", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:330:
Float a = FloatFromStr("1", &alloc.base);
Float b = FloatFromStr("8", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:352:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:353:
Float a = FloatFromStr(FLOAT_TEST_VERY_LARGE_TWOS, &alloc.base);
Float b = FloatFromStr("2", &alloc.base);
Float result_value = FloatInit(&alloc.base);
Str text = StrInit(&alloc.base);- In
Float.Math.c:375:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("7.5", &alloc.base);
Float b = FloatFromStr("2.5", &alloc.base);
Int whole = IntFrom(3, &alloc.base);- In
Float.Math.c:376:
Float a = FloatFromStr("7.5", &alloc.base);
Float b = FloatFromStr("2.5", &alloc.base);
Int whole = IntFrom(3, &alloc.base);
Float result_value = FloatInit(&alloc.base);- In
Float.Math.c:424:
DefaultAllocator alloc = DefaultAllocatorInit();
Float a = FloatFromStr("1", &alloc.base);
Float b = FloatInit(&alloc.base);
Float r = FloatInit(&alloc.base);
Float zero = FloatInit(&alloc.base);
Float value = FloatFromStr("0.001", &alloc.base);
bool result = FloatIsZero(&zero); DefaultAllocator alloc = DefaultAllocatorInit();
Float neg = FloatFromStr("-42", &alloc.base);
Float pos = FloatFromStr("42", &alloc.base);
Float zero = FloatFromStr("-0.0", &alloc.base);
Float neg = FloatFromStr("-42", &alloc.base);
Float pos = FloatFromStr("42", &alloc.base);
Float zero = FloatFromStr("-0.0", &alloc.base); Float neg = FloatFromStr("-42", &alloc.base);
Float pos = FloatFromStr("42", &alloc.base);
Float zero = FloatFromStr("-0.0", &alloc.base);
bool result = FloatIsNegative(&neg); DefaultAllocator alloc = DefaultAllocatorInit();
Float value = FloatFromStr("12.34", &alloc.base);
bool result = FloatExponent(&value) == -2;
Last updated on