Getting people to think about other ways to approach a problem and practice their problem solving skills through critical thinking is nothing to scoff at. Stuff like this also helps highlight the limitations of the hardware and encourages to think about it while they are writing their code.
That's like telling me that, although I always USED to start my car by turning the key, I now have to do it by opening the hood and jumping the starter relay and yanking on the throttle cable.
Working around the missing floating point support is not "sharpening critical thinking skills", it's a waste of time.
Now, I fully agree... IF a person is running up against the memory limit and simply cannot spare another 1.5K, then there's no choice. But otherwise, why not do it the "right way"?
The reason I am so adamant about this is that when I first ran across the "problem", it drove me nuts. I KNEW I was using the "sprintf" format characters properly, but all I was getting was a question mark. Everything else worked (decimals, hex, etc...) so I HAD to be doing something wrong (so I thought). I spent (wasted) close to a WEEK trying to figure out what I was doing wrong. I had a project to finish (not a toy robot, but a real job that I was being paid to do) and I was stuck with the stupid sprintf problem (and I simply was not going to output data with line after line after line of "Serial.print(a_little_piece)" to build up a simple string).
I searched. I Googled. I tried the same code in the GCC compiler for Linux. It worked, so I was sure it was right. Hmmm maybe the Arduino board was bad. So I go and buy another one and had the same problem (i.e. wasted $50 of my customer's money).
Finally, in desperation, I asked about it here... never in a million years would I have guessed that %f was disabled to save a few bytes of code.
After many of the same type of replies (use parsing kludges, use strtof(), etc... finally someone told me the simple fact that floating point was left out on purpose.
I was FURIOUS! How absolutely absurd to do that and not give the user an option to enable it or disable it. And how absurd not to have it documented anywhere!!!
I understand WHY it was left out, but it should have at least had the option to use it or not. And it should be documented!
So, now that I know the problem (and the solution), I see others on here every other day with the same problem and they are given the same advice - kludge it.
User after user faces the same problem and asks the same question, yet the option (which is all of about 5 lines of JAVA code) isn't put into the IDE.
When I offer a simple modification to give the user a checkbox to enable or disable floating point support, everyone starts yelling "My code is 31K already and I just can't spare another byte!"
Baloney! Again, to use the car analogy, it's like buying a new car and then trying to start it, but not finding any place to insert the key. You KNOW there MUST be a key slot SOMEWHERE (all cars have them!), but you look and look and just can't find it. Finally in frustration, you call the dealer and they tell you "Oh your model doesn't have a key - the manufacturer left it out to save weight - gas mileage you know?" and then "There is a jumper cable in the trunk - open the hood and jump the starter".
Are you SERIOUS??? That is completely unacceptable!
I can't speak for others, but I personally do not enjoy beating my head against the wall... especially when there is nothing to gain by doing so.