K
Size: a a a
K
AB
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
A
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
-54.71368408203125
A
A
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
PK
float(color[c] )/ divider_ + adder_при сборке тестов -54.71368408203125 при сборке с pybind11 -54.713726043701171875
auto const result = float(color[c] )/ divider_ + adder_;
auto const reference = -54.71368408203125f;
ASSERT_EQ(result, reference);
в тестах с флоатами всегда надо с эпсилоном сравнивать числа, чтобы не было таких результатовPK
AB
auto const result = float(color[c] )/ divider_ + adder_;
auto const reference = -54.71368408203125f;
ASSERT_EQ(result, reference);
в тестах с флоатами всегда надо с эпсилоном сравнивать числа, чтобы не было таких результатовPK
std::cout << std::numeric_limits<float>::digits10;
6
, так что про оптимистичность 8-9 знаков я был прав в этом сценарииv
std::numeric_limits::digits
AB
v
PK
std::numeric_limits<float>::epsilon()
для сравнений результатов, если тестовый фреймворк не имеет чего-то вроде ALMOST_EQUAL
или EXPECT_FLOAT_EQ
, EXPECT_NEAR
или аналогичной макросниAB
IA
m
std::numeric_limits<float>::epsilon()
для сравнений результатов, если тестовый фреймворк не имеет чего-то вроде ALMOST_EQUAL
или EXPECT_FLOAT_EQ
, EXPECT_NEAR
или аналогичной макросниepsilon()
обычно нужно умножать на что-то. Честно оценивать точность результата после нетривиального преобразования довольно муторно.PK
epsilon()
обычно нужно умножать на что-то. Честно оценивать точность результата после нетривиального преобразования довольно муторно.PK