crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Как округлять в QString?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 13.2.2009, 16:25
  kuler,
посему второй вывод в примере убирает лишние нули.
строчки можно через поток прогнать если тебе не по душе вариант с QString::remove(QRegExp&).

Раскрывающийся текст

// setprecision example
#include <iostream>
#include <iomanip>
using namespace std;

int main () {
double f =3.14159;
cout << setprecision (5) << f << endl;
cout << setprecision (9) << f << endl;
cout << fixed;
cout << setprecision (5) << f << endl;
cout << setprecision (9) << f << endl;
return 0;
}


Раскрывающийся текст

3.1416
3.14159
3.14159
3.141590000
kuler Дата 13.2.2009, 16:20
  kwisp, ну пардон, там же нули не убираются, кроме того мне нужно лить куда нить в строку.

так а в Си++ то вообще как прцижн указывать окромя sprintf?
kwisp Дата 13.2.2009, 14:21
 
Цитата(SABROG @ 13.2.2009, 13:06) *
В стандартных потоках есть такое http://www.cplusplus.com/reference/iostrea...tprecision.html
kuler Дата 13.2.2009, 14:19
 
Цитата(kwisp @ 13.2.2009, 14:14) *
так решение в примере написано

каком?
kwisp Дата 13.2.2009, 14:14
  так решение в примере написано :)
бери и пользуй.
SABROG Дата 13.2.2009, 13:06
  В C++ в принципе нет метода trunc (хотя он и есть в MSVC) для обрезания экспоненты. http://en.wikipedia.org/wiki/Truncate

В стандартных потоках есть такое http://www.cplusplus.com/reference/iostrea...tprecision.html
kwisp Дата 13.2.2009, 12:05
  kuler,
только что проверил этот код не совсем корректно работает. тут реалпрецижион это не колличество знаков после запятой а колличество знаков вообще:)

надо со стандартными потоками поработать:) там вроде можно сделать.
kuler Дата 13.2.2009, 11:33
 
Цитата(Litkevich Yuriy @ 12.2.2009, 19:11) *
а как повод глянуть в его исходник - готовое решение.

просмотр привел к следующему коду, вроде работает
QString str;
    QTextStream stream(&str);
    stream.setRealNumberPrecision(4);

    stream << 4.5;
SABROG Дата 12.2.2009, 23:04
  Сразу хочу сказать, что метод не безопасен, т.к. double может быть больше чем int.

Округляем до тысячных (3 знака) по правилу математики
    double da = 123.0;
    double db = 123.123;
    double dc = 123.0001;
    da = int(da*1000+0.005)/1000.;
    db = int(db*1000+0.005)/1000.;
    dc = int(dc*1000+0.005)/1000.;
    qDebug() << QString("%1 %2 %3").arg(da).arg(db).arg(dc);


"123 123.123 123"
kuler Дата 12.2.2009, 19:46
 
Цитата(kwisp @ 12.2.2009, 19:11) *
а то я смотрю ты в лог выводишь строку эту?

это не я вывожу. Нужно для того что это нормально.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 15:41