1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-16 02:47:36 +02:00

Merge pull request #3619 from Alexander-Wilms/sonarcloud-fixes

Fix float comparisons
This commit is contained in:
Ivan Savenko 2024-02-18 20:05:26 +02:00 committed by GitHub
commit 6329d54296
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 5 additions and 5 deletions

View File

@ -1265,8 +1265,8 @@ bool AINodeStorage::hasBetterChain(
&& nodeActor->heroFightingStrength >= candidateActor->heroFightingStrength
&& node.getCost() <= candidateNode->getCost())
{
if(nodeActor->heroFightingStrength == candidateActor->heroFightingStrength
&& node.getCost() == candidateNode->getCost()
if(vstd::isAlmostEqual(nodeActor->heroFightingStrength, candidateActor->heroFightingStrength)
&& vstd::isAlmostEqual(node.getCost(), candidateNode->getCost())
&& &node < candidateNode)
{
continue;

View File

@ -232,7 +232,7 @@ namespace
std::string multipleOfCheck(Validation::ValidationData & validator, const JsonNode & baseSchema, const JsonNode & schema, const JsonNode & data)
{
double result = data.Float() / schema.Float();
if (floor(result) != result)
if (!vstd::isAlmostEqual(floor(result), result))
return validator.makeErrorMessage((boost::format("Value is not divisible by %d") % schema.Float()).str());
return "";
}

View File

@ -102,7 +102,7 @@ struct DLL_LINKAGE CGPathNode
STRONG_INLINE
void setCost(float value)
{
if(value == cost)
if(vstd::isAlmostEqual(value, cost))
return;
bool getUpNode = value < cost;

View File

@ -35,7 +35,7 @@ void JsonSerializer::serializeInternal(const std::string & fieldName, si32 & val
void JsonSerializer::serializeInternal(const std::string & fieldName, double & value, const std::optional<double> & defaultValue)
{
if(!defaultValue || defaultValue.value() != value)
if(!defaultValue || !vstd::isAlmostEqual(defaultValue.value(), value))
currentObject->operator[](fieldName).Float() = value;
}