From ecff8b5d00f98376ea931797b550aa61c8b61c5f Mon Sep 17 00:00:00 2001 From: Juan Eugenio Abadie Date: Thu, 1 Nov 2018 16:25:38 -0300 Subject: [PATCH] [cpp rest-sdk]Fix precision (#1293) * Convert floating point numbers to string with higher precision * Update PetStore --- .../apiclient-source.mustache | 16 ++++++++++++++-- .../client/petstore/cpp-restsdk/ApiClient.cpp | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache index 3650945081c..b6f58e86525 100644 --- a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache @@ -3,6 +3,18 @@ #include "MultipartFormData.h" #include "ModelBase.h" +#include +#include +#include + +template +utility::string_t toString(const T value) +{ + std::ostringstream out; + out << std::setprecision(std::numeric_limits::digits10) << std::fixed << value; + return out.str(); +} + {{#apiNamespaceDeclarations}} namespace {{this}} { {{/apiNamespaceDeclarations}} @@ -46,12 +58,12 @@ utility::string_t ApiClient::parameterToString(int32_t value) utility::string_t ApiClient::parameterToString(float value) { - return utility::conversions::to_string_t(std::to_string(value)); + return utility::conversions::to_string_t(toString(value)); } utility::string_t ApiClient::parameterToString(double value) { - return utility::conversions::to_string_t(std::to_string(value)); + return utility::conversions::to_string_t(toString(value)); } utility::string_t ApiClient::parameterToString(const utility::datetime &value) diff --git a/samples/client/petstore/cpp-restsdk/ApiClient.cpp b/samples/client/petstore/cpp-restsdk/ApiClient.cpp index 9b7ae17bd82..1a9ac7df1f1 100644 --- a/samples/client/petstore/cpp-restsdk/ApiClient.cpp +++ b/samples/client/petstore/cpp-restsdk/ApiClient.cpp @@ -13,6 +13,18 @@ #include "MultipartFormData.h" #include "ModelBase.h" +#include +#include +#include + +template +utility::string_t toString(const T value) +{ + std::ostringstream out; + out << std::setprecision(std::numeric_limits::digits10) << std::fixed << value; + return out.str(); +} + namespace org { namespace openapitools { namespace client { @@ -57,12 +69,12 @@ utility::string_t ApiClient::parameterToString(int32_t value) utility::string_t ApiClient::parameterToString(float value) { - return utility::conversions::to_string_t(std::to_string(value)); + return utility::conversions::to_string_t(toString(value)); } utility::string_t ApiClient::parameterToString(double value) { - return utility::conversions::to_string_t(std::to_string(value)); + return utility::conversions::to_string_t(toString(value)); } utility::string_t ApiClient::parameterToString(const utility::datetime &value)