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