我想从一个双精度点打印一个以分钟和秒为单位的时间,包括它们的小数部分(最多6位),而不用零结尾。
由于格式的本质,应该有可能在单个printf()语句中将解决方案嵌套在其他参数中!
我要打印的时间变量是秒单位的两倍,并且不超过几十小时的范围。
double time1 = 123.456789; // 2:03.456789 some text
double time2 = 12345.6; // 205:45.6 some text
printf("format: %-16s time1: %.6g some text\n", "%.6g", time1);
printf("format: %-16s time2: %.6g some text\n", "%.6g", time2);
printf("format: %-16s time1: %3d:%09.6f some text\n", "%3d:%09.6f", (int)time1 / 60, fmod(time1, 60));
printf("format: %-16s time2: %3d:%09.6f some text\n", "%3d:%09.6f", (int)time2 / 60, fmod(time2, 60));
printf("format: %-16s time1: %3d:%09.6g some text\n", "%3d:%09.6g", (int)time1 / 60, fmod(time1, 60));
printf("format: %-16s time2: %3d:%09.6g some text\n", "%3d:%09.6g", …Run Code Online (Sandbox Code Playgroud)