Как установить точность для числа

0
#include <iostream>
#include <math.h>
#include "include/Parser.h"
#include </usr/local/include/mysql++/mysql++.h>
#include "/usr/local/include/mysql++/cmdline.h"
#include </usr/include/mysql/mysql_version.h>
#include "/usr/lib/jsoncpp/include/json/json.h"

int main( int argc, char * argv[] )
{
    Json::Value lat = parser["geo"]["lat"];
    cout << "latitude = " <<lat.toStyledString()<< endl;
}

После передачи значения этому аргументу мое значение широты составляет 42.3577770. Я хочу сделать это 42.35, как я могу это сделать?

Я пытался

cout << setprecision(2) << fixed <<  lat.toStyledString() << '\n';

Но это не работает. Есть ли другой способ сделать это?

  • 1
    Ну, это не так. .setprecision применяется к .setprecision с плавающей точкой, ваша функция возвращает строку.
  • 0
    преобразование в строку происходит в lat.toStyledString (). Вот почему setprecision не работает. Отправьте свой лат как double на cout, и вы получите ожидаемые результаты
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ
cout << setprecision(2) << fixed << lat.asDouble() << '\n';

(Согласно онлайн-документации Json :: Value)

  • 0
    спасибо, это работает. Это дает мне значение 42,36, но я хочу 42,35. У вас есть какие-либо предложения для этого? еще раз спасибо
  • 0
    этаж (лат. asDouble () * 100.0) / 100.0
0

Вы хотите удалить toStyledString() и работать с float:

cout << setprecision(2) << fixed << lat << '\n';
  • 0
    как отправить лат в двойном куту?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню