Ganhe dinheiro economizando tempo no CFMX!

Nada a ver o título desse post, mas foda-se, o lance é o seguinte, o JVM apresenta um bug (eu mesmo pude conferir) ao lidar com valores de dinheiro quando o locale é Portuguese(Brazilian):

<cfoutput>#lsCurrencyFormat(977,9)#</cfoutput>

Vai ter como output R$ 977,9 e não R$ 977,90 (duas casas nos centavos), como era de se esperar.

Veja que este não é um bug do CFMX e sim do JVM. A má notícia é que o JVM 1.4.0, última versão lançada (o CFMX vêm com a 1.3.0) não resolve o problema. Testei também a RC1 1.4.1 e NÉCAS!… o RC1 inclusive inverte e confunde alhos com bugalhos… R$ 1.222,1, por exemplo, vira R$ 1,222.10... CATZO!

Palavras do Frutig na lista [cfusion]:

Isto é um bug da classe Java de localização. Verifique na página http://www.inter-locale.com/demos/locales.jsp. Selecione o locale brasileiro e entre um valor numérico tipo 1.000 no campo “Your Value”. O formato currency será R$ 1000. Se vc entrar 1.000,50 o valor formatado como currency será R$ 1.000,5.
Confira o registro deste bug aqui:
http://developer.java.sun.com/developer/bugParade/bugs/4651568.html.
Vc pode verificar se no J2SE v1.4.1 RC (http://java.sun.com/j2se/1.4.1) este bug foi corrigido.
A solução por enquanto é fazer uma UDF, tipo BRCurrencyFormat, para tratar estas situações.


Uma discussão está rolando também nos fórums da MM:

http://webforums.macromedia.com/coldfusion/messageview.cfm?catid=144&threadid=435590

Agora sobre o tempo:

O Java também não entende, para o nosso locale, o formato de hora 06:55:27… Isso inclusive está no documento “Migrating ColdFusion 5 Applications” da MM. Fuck! E agora? Será que a Sun vai se lembrar que também fazemos parte do mundo?