12

整数でない限り、小数点以下 2 桁が表示されるように数値をフォーマットしようとしています。小数点を表示したくありません。0.00_.__9.99およびいくつかの組み合わせを試しました。numberFormatこの結果を取得できる関数のマスクはありますか?

4

9 に答える 9

13
<cfif int(x) eq x>
  #int(x)#
<cfelse>
  #DecimalFormat(x)#
</cfif>
于 2012-07-05T19:29:48.463 に答える
6

変数を 1 で割ると、整数が小数点以下なしで表示されます。

<cfset a = 5.00>
<cfset b = 5.55>

<cfoutput>#a/1#, #b/1#</cfoutput>

出力は5, 5.55です。5.00, 5.551で割らない場合の代わりに。

于 2012-07-05T19:16:17.423 に答える
5

既存の関数はないと思いますが、この丸めの例でうまくいくかもしれません:

    round(yourNumber * 100) / 100

編集: JasonM がコメントで述べたように、これは のような数値の小数点以下 2 桁を生成しません1.1

于 2012-07-05T19:28:05.423 に答える
1

私はそれが何年も経っていることを知っていますが、最初に値の Numberformat を実行してから Trim を実行すると、目的の結果が得られます...ゼロ。

5.55 は 5.55 になり、5.00 は 5 になり、5.5 は 5.5 になります。

于 2014-11-12T21:19:15.383 に答える
1

それでも超グロス。なんてアドビ?

#REReplace(REReplace(DecimalFormat(value), "0+$", "", "ALL"), "\.+$", "")#

クレジット: http://www.webveteran.com/blog/web-coding/coldfusion/trimming-a-decimal-with-coldfusion-regex/

于 2014-04-17T20:06:02.673 に答える
1

私は自分のコードをパンケーキのようにフラットにすることを好み、可能な限り条件分岐を避けるようにしています。したがって、レベルを 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) ) />
于 2016-09-19T22:11:09.567 に答える
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
于 2012-07-19T02:17:21.527 に答える
0
reReplace(numberFormat(val, "__.00"), "\.00$", "")
于 2019-12-17T03:46:47.430 に答える