整数でない限り、小数点以下 2 桁が表示されるように数値をフォーマットしようとしています。小数点を表示したくありません。0.00
、_.__
、9.99
およびいくつかの組み合わせを試しました。numberFormat
この結果を取得できる関数のマスクはありますか?
9 に答える
<cfif int(x) eq x>
#int(x)#
<cfelse>
#DecimalFormat(x)#
</cfif>
変数を 1 で割ると、整数が小数点以下なしで表示されます。
<cfset a = 5.00>
<cfset b = 5.55>
<cfoutput>#a/1#, #b/1#</cfoutput>
出力は5, 5.55
です。5.00, 5.55
1で割らない場合の代わりに。
既存の関数はないと思いますが、この丸めの例でうまくいくかもしれません:
round(yourNumber * 100) / 100
編集:
JasonM がコメントで述べたように、これは のような数値の小数点以下 2 桁を生成しません1.1
。
私はそれが何年も経っていることを知っていますが、最初に値の Numberformat を実行してから Trim を実行すると、目的の結果が得られます...ゼロ。
5.55 は 5.55 になり、5.00 は 5 になり、5.5 は 5.5 になります。
等
それでも超グロス。なんてアドビ?
#REReplace(REReplace(DecimalFormat(value), "0+$", "", "ALL"), "\.+$", "")#
クレジット: http://www.webveteran.com/blog/web-coding/coldfusion/trimming-a-decimal-with-coldfusion-regex/
私は自分のコードをパンケーキのようにフラットにすることを好み、可能な限り条件分岐を避けるようにしています。したがって、レベルを Java に落としても問題ない場合は、DecimalFormatを使用して必要な結果を得ることができます。
<cfset n = JavaCast("double", 1.0) />
<cfset x = CreateObject("java", "java.text.DecimalFormat").init() />
<cfset x.applyPattern("##.##") />
<cfset y = x.format(n) />
次のワンライナーも機能します。
<cfset y = CreateObject("java", "java.text.DecimalFormat").init( "##.##" ).format( JavaCast("double", 1.0) ) />
precisionEvaluate() + numberFormat() + replaceFirst(regex) を使用します
<cfscript>
numberFormat( precisionEvaluate( num ), '_.00' ).replaceFirst( '\.00$', '' );
</cfscript>
例えば:
50.00 -> 50
0.00 -> 0
0.001 -> 0
0.006 -> 0.01
123.45 -> 123.45
4/3 -> 1.33
5.24596 -> 5.25
pi() -> 3.14
12345678901234567890 -> 12345678901234567000
reReplace(numberFormat(val, "__.00"), "\.00$", "")