2009-03-20 13 views
7

मैं OCaml और कोर भाषा में तैरता के लिए एक निरपेक्ष मान समारोह की जरूरत होती हूँ पास मौजूद हो प्रतीत नहीं होता है, तो मैं निम्नलिखित लिखा है:निरपेक्ष मूल्य OCaml

let absF (f:float) = if f > 0.0 then f else (f *. -1.0);; 

जो लगता है सकारात्मक के लिए लेकिन नकारात्मक के लिए नहीं काम करने के लिए, का हवाला देते हुए:

यह अभिव्यक्ति टाइप नाव है -> नाव लेकिन यहाँ प्रकार int

मेरे तर्क में त्रुटि क्या है के साथ प्रयोग किया जाता है?

उत्तर

10

जब आप टाइप

absF -1.0;; 

OCaml के रूप में

(absF) - (1.0);; 
एक घटाव के रूप में

यानी यह व्याख्या करता है। इसके बजाय,

absF (-1.0);; 
13

मूल भाषा में एक, abs_float है।

इसके अलावा, आप ~-. का उपयोग अनियमित अस्वीकृति को दर्शाने के लिए कर सकते हैं, और यह ~- ऑपरेटर के साथ पूर्णांक पर भी लागू होता है। आप इस तरह के एक ऑपरेटर (भले ही यह पहले से ही मौजूद है) इस तरह परिभाषित कर सकते हैं:

let (~-) a : int = 0 - a 
let (~-.) a : float = 0.0 -. a 
2

अगर आपके पास है, तो आप एक नाव है पूर्णांक मूल्य

# abs(-1) 
- : int = 1 
बाकी

उपयोग कर सकते हैं

# abs_float(-1.0) 
- : float = 1. 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^