的双号什么是在C语言打印双(printf的),使得简单的解决方案:漂亮打印在一个固定数目的字符
恰好被用于N个字符(将围绕6),用于所有的双数(nan和infinities分开处理),正面和负面都一样(+或 - 总是作为第一个字符);
只要数字字符不全为0(即数字太小)或小数点是N个字符的最后一个(即太大的数字),就使用十进制表示('。'总是存在)。否则切换到科学表示,始终占用N个字符。
我能想到的似乎相当复杂的所有解决方案,任何想法容易获得这样的结果(效率是不是一个问题在这里)?
谢谢!
的双号什么是在C语言打印双(printf的),使得简单的解决方案:漂亮打印在一个固定数目的字符
恰好被用于N个字符(将围绕6),用于所有的双数(nan和infinities分开处理),正面和负面都一样(+或 - 总是作为第一个字符);
只要数字字符不全为0(即数字太小)或小数点是N个字符的最后一个(即太大的数字),就使用十进制表示('。'总是存在)。否则切换到科学表示,始终占用N个字符。
我能想到的似乎相当复杂的所有解决方案,任何想法容易获得这样的结果(效率是不是一个问题在这里)?
谢谢!
我找不到通过单个printf调用来完成此操作的方法,这里是我的解决方案。
至少9个字符必须用作(前面加+),即科学记数法的最小字符数(例如:+ 1.0E-002)。在下面我考虑9个字符的情况。以下两个格式用于基于所报告的下面的条件:
科学格式“%+ 1E”:
字符4至9按照十进制格式是0和数量是不相同0(即小数点过小)
'。'炭是不是char 3和炭8按十进制格式之间存在(即,对于小数太大)
十进制格式 '%+ 6F':
无限或NaN
所有其他情况下
这很容易通过改变一个const,以适应比表示9个字符长上面的蚂蚁。
为什么投降? – stepelu
我们不在这里为你开发算法。你所提供的基本上是一项家庭作业的任务,带着“为我做这件事”从你身上隐藏。 –
显示您尝试过的内容,为什么它不正确,以及您需要更多信息。 http://www.cplusplus.com/reference/cstdio/printf/将是一个开始。 – clcto