Skip to content

Commit ecff8b5

Browse files
whoanetherealjoy
authored andcommitted
[cpp rest-sdk]Fix precision (#1293)
* Convert floating point numbers to string with higher precision * Update PetStore
1 parent 521f5fa commit ecff8b5

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@
33
#include "MultipartFormData.h"
44
#include "ModelBase.h"
55

6+
#include <sstream>
7+
#include <limits>
8+
#include <iomanip>
9+
10+
template <typename T>
11+
utility::string_t toString(const T value)
12+
{
13+
std::ostringstream out;
14+
out << std::setprecision(std::numeric_limits<T>::digits10) << std::fixed << value;
15+
return out.str();
16+
}
17+
618
{{#apiNamespaceDeclarations}}
719
namespace {{this}} {
820
{{/apiNamespaceDeclarations}}
@@ -46,12 +58,12 @@ utility::string_t ApiClient::parameterToString(int32_t value)
4658

4759
utility::string_t ApiClient::parameterToString(float value)
4860
{
49-
return utility::conversions::to_string_t(std::to_string(value));
61+
return utility::conversions::to_string_t(toString(value));
5062
}
5163

5264
utility::string_t ApiClient::parameterToString(double value)
5365
{
54-
return utility::conversions::to_string_t(std::to_string(value));
66+
return utility::conversions::to_string_t(toString(value));
5567
}
5668

5769
utility::string_t ApiClient::parameterToString(const utility::datetime &value)

samples/client/petstore/cpp-restsdk/ApiClient.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@
1313
#include "MultipartFormData.h"
1414
#include "ModelBase.h"
1515

16+
#include <sstream>
17+
#include <limits>
18+
#include <iomanip>
19+
20+
template <typename T>
21+
utility::string_t toString(const T value)
22+
{
23+
std::ostringstream out;
24+
out << std::setprecision(std::numeric_limits<T>::digits10) << std::fixed << value;
25+
return out.str();
26+
}
27+
1628
namespace org {
1729
namespace openapitools {
1830
namespace client {
@@ -57,12 +69,12 @@ utility::string_t ApiClient::parameterToString(int32_t value)
5769

5870
utility::string_t ApiClient::parameterToString(float value)
5971
{
60-
return utility::conversions::to_string_t(std::to_string(value));
72+
return utility::conversions::to_string_t(toString(value));
6173
}
6274

6375
utility::string_t ApiClient::parameterToString(double value)
6476
{
65-
return utility::conversions::to_string_t(std::to_string(value));
77+
return utility::conversions::to_string_t(toString(value));
6678
}
6779

6880
utility::string_t ApiClient::parameterToString(const utility::datetime &value)

0 commit comments

Comments
 (0)