我想将数字转换为QString3位有效数字.
QString::number(myNumber,'f',3);
Run Code Online (Sandbox Code Playgroud)
做的工作但仍然落后零.没有它们如何使用它.
我也试过了'g',哪些不应该留下那些零:
QString::number(myNumber,'g',3);
Run Code Online (Sandbox Code Playgroud)
但是例如472.76被转换为473.这让我感到惊讶.为什么'g'选择这样呢?
但是我对'f'格式很感兴趣.所以主要的问题是如何在'f'没有尾随零的情况下完成它?
输入 - >所需的输出
472.76 - > 472.76
0.0766861 - > 0.077
180.00001 - > 180
Chr*_*ris 11
我几乎不好意思发布这个但是它有效:
QString toString( qreal num )
{
QString str = QString::number( num, 'f', 3 );
str.remove( QRegExp("0+$") ); // Remove any number of trailing 0's
str.remove( QRegExp("\\.$") ); // If the last character is just a '.' then remove it
return str;
}
Run Code Online (Sandbox Code Playgroud)
如果你真的担心使用这种方法的性能,你可能想要提出一个不同的解决方案.
QString::number(myNumber,'g',3);
Run Code Online (Sandbox Code Playgroud)
将限制转换为有效数字。你通常会有 3 个数字。
472.76 => 472
4.7276 => 4.72
Run Code Online (Sandbox Code Playgroud)
尝试使用格式化打印功能,例如QString::sprintf. 这应该会给你更多的控制权。
QString numStr;
numStr.sprintf("f.3f", myNumber);
Run Code Online (Sandbox Code Playgroud)