I'm trying to work out why a larger problem is occurring, using a smaller program as an example. This smaller program does not work, leading me to believe it is my understanding of the function that is flawed.
As far as I (had) believed, the following program should initialise a string with up to 30 characters, then take the number '5' to nine significant figures, and turn it into that string. The program should then print the value '5.00000000'. However, the program prints the value 7.96788(...). Why is this?
#include <stdio.h>
int main()
{
char word[30];
sprintf(word, "%.9g", 5);
printf(word);
return 0;
}
This is because 5
is an integer (int
), and you're telling sprintf
to pretend that it's a double-precision floating-point number (double
). You need to change this:
sprintf(word,"%.9g", 5);
to either of these:
sprintf(word,"%.9g", 5.0);
sprintf(word,"%.9g", (double) 5);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With