Я хочу конвертировать число в QString
с 3 значащими цифрами.
QString::number(myNumber,'f',3);
делает работу, но остается нули. Как использовать это без них.
Тоже попробовал 'g'
и которые не должны оставаться теми нулями:
QString::number(myNumber,'g',3);
но, например, 472,76 превращается в 473. Это меня удивило. Почему это так с 'g'
вариант?
Однако я заинтересован в 'f'
формат. Таким образом, главный вопрос, как это сделать с 'f'
без конечных нулей?
Ввод -> Желаемый выход
472,76 -> 472,76
0,0766861 -> 0,077
180.00001 -> 180
Я почти смущен, чтобы отправить это, но это работает:
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;
}
Если вы действительно беспокоитесь о производительности, используя этот метод, вы можете предложить другое решение.
QString::number(myNumber,'g',3);
Будет ограничивать преобразование в значащие цифры. У вас всегда будет 3 номера.
472.76 => 472
4.7276 => 4.72
Попробуйте использовать отформатированные функции печати, такие как QString::sprintf
, Это должно дать вам больше контроля.
QString numStr;
numStr.sprintf("f.3f", myNumber);
QString str;
str.setNum(myNumber, 'f', 3);
Это будет делать то, что вам нужно, я проверял это. Как ни странно, «число» ведет себя не так, как «setNum».