Bunun toplam yeni soru olduğunu biliyorum ama cevap çok yeni programcılar için açık olmayabilir. Başlangıçta benim için açık değildi, bu yüzden bu basit işi yapmak için Perl modüllerini aramaya başladım.Perl'deki bilimsel ve ondalık notasyon arasında nasıl dönüştürebilirim?
5
A
cevap
17
sprintf kandırmasına
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";
yapar bu çıktıyı oluşturur: Eğer (bilimsel gösterimde bir sürümünü olan) ondalık gösterimle ve engineering notation arasında dönüştürmek istiyorsanız,
Decimal (3.33333333333333) to scientific (3.333333e+000)
Scientific (1.23456789e+001) to decimal (12.3456789)
3
ilgili tema üzerinde CPAN'dan gelen Number::FormatEng modülü kullanışlıdır:
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
Ondalık değeri elde etmek için "% .10f" yi kullanmalıydım, çünkü "g" onu bilimsel gösterimde tutuyordu. Ubuntu'da Perl v5.10.1 kullanıyorum. Güzel yazı, teşekkürler! – Alan
Çalışmak için sprintf alıyorum ama 'printf' ve' '% .10f' yerine' g' çalıştı. Perl sürümü 5.14.2. – terdon