Converting float value to string

Hi

I am using nRF Connect SDK, wioth nRF5340_DK.
I am trying to convert a float value to a string, with two decimal places.
Have a look at the code below, and then see the outputs.
I don't know why the 2nd and 3rd efforts don't work.

    float dbg_float_val;
    char dbg_buf1[8];
    int dbg_len1;
    char dbg_buf2[8];
    int dbg_len2;
    char dbg_buf3[8];
    int dbg_len3;

    dbg_float_val = 1.234F;

    int wholePart = (int)dbg_float_val;
    int decimalPart = (int)((dbg_float_val - wholePart) * 100); // Multiply by 100 to get two decimal places    
    dbg_len1 = snprintf(dbg_buf1, sizeof(dbg_buf1), "%d.%02d", wholePart, decimalPart);
    printf("Result 1: dbg_buf1 = %s, dbg_len1: %d\n", dbg_buf1, dbg_len1);

    dbg_len2 = sprintf(dbg_buf2,"%.2f", dbg_float_val);
    printf("Result 2: dbg_buf2 = %s, dbg_len2: %d\n", dbg_buf2, dbg_len2);

    dbg_len3 = snprintf(dbg_buf3, sizeof(dbg_buf3), "%.2f", dbg_float_val);
    printf("Result 3: dbg_buf3 = %s, dbg_len3: %d\n", dbg_buf3, dbg_len3);

The output I get:

Result 1: dbg_buf1 = 1.23, dbg_len1: 4
Result 2: dbg_buf2 = %.2f, dbg_len2: 4
Result 3: dbg_buf3 = %.2f, dbg_len3: 4

Related