2013-03-03 3 views
1

Я пытаюсь вычислить грех (pi радианы), используя Math.Sin(). Я использую следующий код.Является ли Math.Sin неправильным ответом?

 double degrees = 180; 
     double radians = Math.PI/180 * degrees; 
     Console.WriteLine(Math.Sin(radians)); 

Это дает мне значение

1.22460635382238E-16

Что является причиной этого? Разумеется, он должен правильно возвращать значение 0?

Пожалуйста, просветите меня. Благодарю.

+1

Для всех «Является ли <встроенная функциональность> ... неправильной?» - Нет, ваше использование этого или ваши ожидания неверны ;-) – delnan

+0

Ваш угол технически говоря не совсем pi, это всего лишь некоторое приближение (поскольку pi имеет бесконечно много значащих десятичных цифр). Почему в результате получается приближение 0? – Vlad

+0

Это не проблема, мне было просто любопытно, почему она не возвращалась ровно 0, так как sin (pi radians) в калькуляторе Google и calc.exe давал мне 0 Я предположил, что Math.Sin() будет таким же. Спасибо за ответы. – user1727141

ответ

6

1.22460635382238E-16 в основном 0. она на самом деле представляет собой число

0,000000000000000122460635382238. Это число близко к 0. Это в основном только из-за различных ошибок округления, все вместе.

Посмотрите на http://en.wikipedia.org/wiki/Floating_point для получения дополнительной информации.