Prevents using `==` and `!=` operators on floats and doubles
This product is not supported for your selected
Datadog site. (
).
이 페이지는 아직 영어로 제공되지 않습니다. 번역 작업 중입니다.
현재 번역 프로젝트에 대한 질문이나 피드백이 있으신 경우
언제든지 연락주시기 바랍니다.ID: csharp-best-practices/float-equality
Language: C#
Severity: Error
Category: Best Practices
Description
Floating point math is inherently imprecise, so checking strict equality to a float or double will very likely lead to unexpected bugs.
For example:
Input
var a = 0.1f;
var b = 0.2f;
var c = 0.3f;
Console.WriteLine($"{a + b == c}");
Output
(Note: exact results can vary depending on the compiler used)
Non-Compliant Code Examples
class NonCompliant
{
public static void Main()
{
float foo = 1.2345f;
if (foo == 1.2345f) { /* ... */ }
if (4.567d == 4.567d) { /* ... */ }
if (4.567f != 4.567f) { /* ... */ }
bool isEqual = foo == 1.2345f;
}
}
Compliant Code Examples
class Compliant
{
public static void Main()
{
float foo = 1.2345f;
var tolerance = 0.000000001f;
if (Math.Abs(foo - 1.2345f) < tolerance) { /* ... */ }
}
}
원활한 통합. Datadog Code Security를 경험해 보세요