We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent d9e0e11 commit 8234196Copy full SHA for 8234196
2 files changed
src/scratch/value_functions_p.h
@@ -50,7 +50,7 @@ extern "C"
50
return v < 0 && std::isinf(v);
51
}
52
53
- inline long value_convert_int_str(const char *str, int n, bool *ok)
+ inline double value_convert_int_str(const char *str, int n, bool *ok)
54
{
55
if (ok)
56
*ok = false;
@@ -80,7 +80,7 @@ extern "C"
80
*ok = true;
81
82
if (isNegative)
83
- return -ret;
+ return -static_cast<double>(ret); // for negative zero
84
else
85
return ret;
86
test/scratch_classes/value_test.cpp
@@ -938,6 +938,15 @@ TEST(ValueTest, ToDouble)
938
v = "-0.15";
939
ASSERT_EQ(v.toDouble(), -0.15);
940
941
+ v = "0";
942
+ ASSERT_EQ(v.toDouble(), 0.0);
943
+ v = "-0";
944
+ ASSERT_EQ(v.toDouble(), -0.0);
945
+ v = "0.0";
946
947
+ v = "-0.0";
948
949
+
950
v = "+.15";
951
ASSERT_EQ(v.toDouble(), 0.15);
952
v = ".15";
@@ -2879,6 +2888,11 @@ TEST(ValueTest, StringToDouble)
2879
2888
ASSERT_EQ(value_stringToDouble("0.15"), 0.15);
2880
2889
ASSERT_EQ(value_stringToDouble("-0.15"), -0.15);
2881
2890
2891
+ ASSERT_EQ(value_stringToDouble("0"), 0.0);
2892
+ ASSERT_EQ(value_stringToDouble("-0"), -0.0);
2893
+ ASSERT_EQ(value_stringToDouble("0.0"), 0.0);
2894
+ ASSERT_EQ(value_stringToDouble("-0.0"), -0.0);
2895
2882
2896
ASSERT_EQ(value_stringToDouble("+.15"), 0.15);
2883
2897
ASSERT_EQ(value_stringToDouble(".15"), 0.15);
2884
2898
ASSERT_EQ(value_stringToDouble("-.15"), -0.15);
0 commit comments