2015-12-18 1 views
2

Недавно я обновился до версии 1.6.5 JsonCpp.JsonCpp - Ноль после десятичной точки усечен

Я заметил, что числа с плавающей запятой, где цифра после десятичной точки равна нулю, усекаются при печати. Например, 2.0 напечатан как 2

В предыдущей версии я использовал (v0.6.0) этого не делал.

Ожидается ли такое поведение?

UPDATE

Следующий код демонстрирует проблему, описанную:

Json::Value object; 
object["float1"] = 2.0f; 
object["float2"] = 2.1f; 

Json::StyledWriter styledWriter; 
std::cout << styledWriter.write(object); 

Выход при запуске на OS X с помощью Xcode 6.3.2 является:

{ 
    "float1" : 2, 
    "float2" : 2.0999999046325684 
} 
+0

Можете ли вы привести пример кода, который представляет проблему? –

ответ

1

Это не удивительно, , Формат JSON имеет только NUMBER тип данных. Он не проводит различия между Integer и Floating Point. (Конечно, получение кода может быть подготовлено только для принятия целочисленных значений в определенных полях, но это другой вопрос. Почти все клиенты могут принимать число без десятичной точки, когда они ожидают значение с плавающей запятой).

+1

Но почему разница в выходе между версиями? – ksl

+0

Вам нужно будет взглянуть на разницу, чтобы ответить на это. –

+1

Не удалось найти что-либо, чтобы объяснить это. Отсюда вопрос. – ksl