TerraForge3D  2.3.1
3D Terrain And Landscape Generator

◆ grisu2_round()

void nlohmann::detail::dtoa_impl::grisu2_round ( char *  buf,
int  len,
std::uint64_t  dist,
std::uint64_t  delta,
std::uint64_t  rest,
std::uint64_t  ten_k 
)
inline

Definition at line 16056 of file json.hpp.

16058{
16059 JSON_ASSERT(len >= 1);
16060 JSON_ASSERT(dist <= delta);
16061 JSON_ASSERT(rest <= delta);
16062 JSON_ASSERT(ten_k > 0);
16063
16064 // <--------------------------- delta ---->
16065 // <---- dist --------->
16066 // --------------[------------------+-------------------]--------------
16067 // M- w M+
16068 //
16069 // ten_k
16070 // <------>
16071 // <---- rest ---->
16072 // --------------[------------------+----+--------------]--------------
16073 // w V
16074 // = buf * 10^k
16075 //
16076 // ten_k represents a unit-in-the-last-place in the decimal representation
16077 // stored in buf.
16078 // Decrement buf by ten_k while this takes buf closer to w.
16079
16080 // The tests are written in this order to avoid overflow in unsigned
16081 // integer arithmetic.
16082
16083 while (rest < dist
16084 && delta - rest >= ten_k
16085 && (rest + ten_k < dist || dist - rest > rest + ten_k - dist))
16086 {
16087 JSON_ASSERT(buf[len - 1] != '0');
16088 buf[len - 1]--;
16089 rest += ten_k;
16090 }
16091}