Precizia numerelor complexe: Diferență între versiuni
(Pagină nouă: The real and imaginary parts of a complex number are represented by two double-precision floating-point values. This means that Complex values, like double-precision floating-point...) |
|||
Linia 1: | Linia 1: | ||
− | + | Partea reală și partea imaginară a unui număr complex sunt reprezentate ca variabile în virgulă mobilă de tip ''double''. Din acest motiv își pot pierde precizia ca urmare a operațiunilor matematice. Asta înseamnă că strictețea comparațiilor de egalitate nu este garantată și poate da erori. De exemplu, aplicarea unei funcții exponențiale asupra rezultatului unui logaritm va da diferențe: | |
− | |||
− | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
Complex value = new Complex(Double.MinValue/2, Double.MinValue/2); | Complex value = new Complex(Double.MinValue/2, Double.MinValue/2); |
Versiunea de la data 29 martie 2020 11:01
Partea reală și partea imaginară a unui număr complex sunt reprezentate ca variabile în virgulă mobilă de tip double. Din acest motiv își pot pierde precizia ca urmare a operațiunilor matematice. Asta înseamnă că strictețea comparațiilor de egalitate nu este garantată și poate da erori. De exemplu, aplicarea unei funcții exponențiale asupra rezultatului unui logaritm va da diferențe:
Complex value = new Complex(Double.MinValue/2, Double.MinValue/2);
Complex value2 = Complex.Exp(Complex.Log(value));
Console.WriteLine("{0} \n{1} \nEqual: {2}", value, value2,
value == value2);
// The example displays the following output:
// (-8.98846567431158E+307, -8.98846567431158E+307)
// (-8.98846567431161E+307, -8.98846567431161E+307)
// Equal: False