2013-09-30 41 views
2

我用這個目前打印負美元快速路值

$Profit = -8.2 ; 
printf("%8s",sprintf("\$%0.2f",$Profit)). 

它打印

$-8.2 

是否有一個快速簡便的方法來打印

-$8.2 
+1

也許你應該試試['地點::貨幣:: Format'(http://search.cpan.org/perldoc?Locale%3A%3ACurrency%3A%3AFormat)。 – TLP

回答

6
sprintf("%s\$%0.2f", $Profit >=0 ? "" : "-", abs($Profit)) 

5.14+ :

sprintf("%0.2f", $Profit) =~ s/^-?\K/\$/r 
+0

5.14+解決方案如何工作?什麼是'\ K'? – Jean

+2

@Jean'\ K'將匹配的子字符串保留在前一匹配。它本質上是一個可變長度lookbehind。 '\ K'本身比5.14年代大一點;這裏的特殊事物是'/ r',它返回替換字符串而不是修改原始字符串。 – amon

+0

在 - 之前丟失^ \;否則正是我要說:) – ysth