[video output=day329 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Printing Out Floats Poorly" vod_platform=youtube id=Qqp-O4cujVM annotator=Miblo]
[0:28][Recap and set the stage for the day]
[2:29][Run the game and refamiliarise ourselves with the code]
[3:51][handmade_shared.h: Fix an ArrayCount() call in FormatStringList()]
[5:37][handmade_shared.h: Introduce F64ToASCII() and consider precision]
[8:47]["I am not a floating point guru"][quote 524]
[9:06][Blackboard: Float Printing]
[11:37][Blackboard: The problematic concept of the decimal point]
[14:28][Blackboard: Breaking this fractional problem down]
[15:25][Internet: modf[ref
    site="C++ Reference"
    page="modf"
    url="http://www.cplusplus.com/reference/cmath/modf/"]]
[17:21][Blackboard: Summing the fractional parts together]
[21:00][handmade_shared.h: Implement F64ToASCII()]
[28:36][Compile and run, see that our precision looks messed up and investigate why]
[29:45][handmade_shared.h: Make FormatStringList() set Precision if not set, and bake the string reversal code in to U64ToASCII()]
[37:03][Debugger: Step in to U64ToASCII() to take a look at what that does]
[41:03][handmade_shared.h: Endeavour to handle precision correctly]
[42:31][Internet: Consult the printf spec[ref
    site="C++ Reference"
    page="printf"
    url="http://www.cplusplus.com/reference/cstdio/printf/"]]
[42:51]["Chrome? Chrooooooome?"][quote 525]
[46:05][handmade_shared.h: Make FormatStringList() handle the Width in accordance with the printf spec]
[47:18][Run the game and see that the printouts are untouched]
[47:37][handmade_shared.h: Make FormatStringList() correctly compute the Precision]
[49:23][Run the game, see the floating point values looking better and consider what the Width specifier actually means]
[55:00][Q&A][:speech]
[56:26][@zamar037][Does the float printout account for left or right alignment?]
[58:17][@sharlock93][Are we stuck on what something %3d means? I was away]
[59:17][@culver_fly][Sorry if it sounds rude, but why do you even care about the specs? Why don't you just print whatever you want it to be? I mean, it's your code?]
[59:48][handmade_shared.h: Deduplicate the float cases]
[1:01:01][@sharlock93][As far as I know %3.3f means 3 numbers before the decimal and precise to three decimal numbers]
[1:01:35][@mmozeiko][Use the http://cppreference.com it has better docs than cplusplus.com, and cppreference states it's a minimum width]
[1:02:21][@sharlock93][Guess I have been wrong all this time]
[1:02:42][@insofaras][Can you say something quotable for test purposes?]
[1:02:51]["I feel like it's hard to say something quotable on demand"][quote 526]
[1:03:12][@3ygun][Minimum width would make it more consistent across all types of printf]
[1:03:24][@programgamer][So wait, is it a behavior problem or a bad spec problem?]
[1:04:04][@elxenoanizd][Do you think it's worth implementing a custom string class that uses a custom heap for allocation and disposition of memory instead of dealing directly with null-terminated C-strings (talking mostly for tools programming)?]
[1:04:39][@sharlock93][Thanks for the stream, have a good evening, going to work, are you gonna stream at this time from now on?]
[1:05:24][@macielda][Is text printing speed interfering with your profiling accuracy in a significant way?]
[1:05:56][@torgdor][What advantages does this version of printf have over the standard library printf?]
[1:08:12][@longboolean][Right now you are padding with zeros, "the spec", at least in one example, looks like it pads with spaces]
[1:08:33][@elxenoanizd][When is the next Handmade Con?[ref
    site="Molly Rocket"
    page="HandmadeCon 2016 is GO!"
    url="https://mollyrocket.com/news_0033.html"]]
[1:10:08][@music_guru][What else is left other than printf that would need to be removed?]
[1:13:32][@longboolean][Could you explain briefly why this simple approach of printing floats can lead to precision errors?]
[1:14:53][@zeanith64][Will everything be recorded at HandmadeCon? Considering what nearly happened last year, I'm a little worried]
[1:16:28][Wrap it up][:speech]
[/video]
