如何轉換字符串在Perl字符串如何轉換爲數字(浮動)在Perl
$str = '10.0500000';
$number = $str * 1; # 10.05
到數爲那裏得到'10 0.0500000' 10.05,而不是一個乘以任何其他標準的方式?
如何轉換字符串在Perl字符串如何轉換爲數字(浮動)在Perl
$str = '10.0500000';
$number = $str * 1; # 10.05
到數爲那裏得到'10 0.0500000' 10.05,而不是一個乘以任何其他標準的方式?
我回答這個問題的文字。也許你想format the number顯示。
兩個表達式
sprintf '%.2f', '10.0500000'
sprintf '%.2f', 10.0500000
返回字符串10.05
。
嗯,你可以加0以及:-)
你不應該太在意在Perl標量的內部表示,除非你正在做一些奇怪的事情(如果你請告訴我們是)。無論看起來像一個數字是一個數字。
或者您是否需要檢查字符串是否是「真實」號碼?實際上,任何字符串都是。關於此主題有一篇很好的文章:http://www.perl.com/doc/FMTEYEWTK/is_numeric.html
在Perl中,標量不是鍵入的。相反,運營商是。所以當你做$a . "1"
你使用$a
作爲一個字符串,當你做$a + 1
時,你使用$a
作爲一個數字。 Perl會盡力找出給定操作的標量意味着什麼。所以在大多數情況下,「轉換」是爲你隱式完成的。
如果您需要驗證您的字符串確實可以轉換,請使用正則表達式。
下面是關於如何做一個話語:http://www.regular-expressions.info/floatingpoint.html
0+
比較習慣。它通常用於區分dualvars的組件。
$ perl -E'
system({ "nonexistant" } "nonexistant");
say 0+$!, ": ", $!;
'
2: No such file or directory
它看起來很奇怪,因爲它不是你通常必須做的事情。一個數字是一個數字,不管它是作爲PV,IV,UV還是NV內部存儲的。強制它作爲一個NV(浮動)存儲不應該是必要的,並且它通常指示其他地方的錯誤設計。
你有看看http://stackoverflow.com/questions/2019178/how-can-i-convert-a-string-to-a-float-with-perl? –
@Jessada。這沒有用。它沒有談論如何轉換。 – Bala
@Hindol int()將給出整數值... int(10.05000)= 10 – Bala