2010-03-19 17 views
5

मुझे पता है कि यह एक नया नौसिखिया प्रश्न है, लेकिन उत्तर कई नए प्रोग्रामर के लिए स्पष्ट नहीं हो सकता है। यह शुरुआत में मेरे लिए स्पष्ट नहीं था इसलिए मैंने इस सरल कार्य को करने के लिए इंटरनेट को पर्ल मॉड्यूल की तलाश में डाला।पर्ल में वैज्ञानिक और दशमलव नोटेशन के बीच मैं कैसे परिवर्तित कर सकता हूं?

उत्तर

17

sprintf चाल

use strict; 
use warnings; 

my $decimal_notation = 10/3; 
my $scientific_notation = sprintf("%e", $decimal_notation); 

print "Decimal ($decimal_notation) to scientific ($scientific_notation)\n\n"; 

$scientific_notation = "1.23456789e+001"; 
$decimal_notation = sprintf("%.10g", $scientific_notation); 

print "Scientific ($scientific_notation) to decimal ($decimal_notation)\n\n"; 

इस उत्पादन उत्पन्न करता है:,

Decimal (3.33333333333333) to scientific (3.333333e+000) 

Scientific (1.23456789e+001) to decimal (12.3456789) 
+2

को दशमलव मान प्राप्त करने के लिए "% .10f" का उपयोग करना पड़ा, क्योंकि "जी" ने इसे वैज्ञानिक नोटेशन में रखा था। मैं उबंटू पर पर्ल v5.10.1 का उपयोग कर रहा हूँ। अच्छा पोस्ट, धन्यवाद! – Alan

+1

मुझे काम करने के लिए 'sprintf' नहीं मिला लेकिन' g' के बजाय 'printf' और'% .10f' ठीक काम किया। पर्ल संस्करण 5.14.2। – terdon

3

एक संबंधित विषय पर यदि आप दशमलव संकेतन और engineering notation (वैज्ञानिक संकेतन का एक संस्करण है जो) के बीच कनवर्ट करना चाहते हैं , सीपीएएन से Number::FormatEng मॉड्यूल आसान है:

use Number::FormatEng qw(:all); 
print format_eng(1234);  # prints 1.234e3 
print format_pref(-0.035); # prints -35m 
unformat_pref('1.23T');  # returns 1.23e+12 
संबंधित मुद्दे

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