首先,这不是重复的。我在网上搜索,但没有答案是足够的。
我想打印一张。所以我必须将其转换为QString。我不希望有科学记数法,而0.1应该打印0.1,而1/3应该打印0.33333 ...因为double可以表示。不幸的是,我只能找到具有固定精度的解决方案,这会导致设置上限0.333333(在指定的填充精度后结束)或不必要的零填充0.100000。
我知道我可以最大程度地提高精度并丢弃所有尾随的零,但是那里不是一个好的解决方案,它只打印最大可能但最小必要精度?
编辑:我想我需要澄清一些事情。这个问题不是要把实数的空间映射成单,双或任何精度的浮点数。这是相反的:将64位双精度浮点空间映射到我们心爱的现实世界实数中。由于前者是后者的子集,因此从理论上讲,绝对没有问题。
试试最简单的事情QString::number(1.0/3.0, 'g', 17);
,或者使用时std::ostream
存在的std :: setprecision用于为小数的控制数operator<<
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句