2012-10-03 17 views
6

मेरा कोड रेडियंस में cos, tan और sin पर कोण को पास करता है। 90 के तन को छोड़कर सबकुछ ठीक काम करता प्रतीत होता है, जो किसी अजीब कारण के लिए 16331239353195370 मान देता है। उदाहरण कोड:तन() जावा में एक अजीब मूल्य लौटा रहा है

import java.text.DecimalFormat; 

public class mathtable { 

    public static void main(String[] args) { 

    System.out.println("Angle Sin Cos Tan"); 
    System.out.println("----- --- --- ---"); 

    for (double angle = 0.0; angle < 180; angle +=5) { 
     double angle_rad = Math.toRadians(angle); 
     double sin = Math.sin(angle_rad); 
     String sin_4 = new DecimalFormat("#.####").format(sin); 
     double cos = Math.cos(angle_rad); 
     String cos_4 = new DecimalFormat("#.####").format(cos); 
     double tan = Math.tan(angle_rad); 
     String tan_4 = new DecimalFormat("#.####").format(tan); 
     System.out.println(angle + " " + sin_4 + " " + cos_4 + " " + tan_4); 
    } 
    } 
} 

मूल्य आईईईई अनंतता के बराबर बराबर क्यों नहीं है?

उत्तर

13

ठीक है, tan(pi/2) रेडियंस में अनिवार्य रूप से अनंत है, है ना? तो आप एक बहुत बड़ी संख्या पाने की उम्मीद करेंगे, है ना? (यह अनंत क्योंकि pi/2 वास्तव में एक double के रूप में प्रतिनिधित्व नहीं किया जा सकता है। आप जहां यह अनंत बन जाएगा करने के लिए बहुत पास एक asymptotic वक्र पर एक मूल्य पता लगा रहे हैं।)

देखें these graphs of sin/cos/tan क्या देखने के लिए मैं मतलब, याद रखना कि पीआई/2 रेडियंस 90 डिग्री है।

+1

नहीं पीआई/4 लेकिन पीआई/2 = 9 0 डिग्री। –

+0

आह हाँ यह समझ में आता है, धन्यवाद! – Kynian

+0

@ सुज़ानसिओक: दोह, धन्यवाद, तय। –