gspで浮動小数点数を操作したいのですが、ここに私が欲しいものがあります:
数値に 1.* がある場合はドットを表示したいのですが、ゼロで終わる場合はドットとゼロを表示したくありません。
このような:
スコア: 1.5
スコア: 1
スコア: 2.1
スコア: 3
スコア変数は浮動小数点数であり、数値をロードする gsp の入力フィールドであり、変更することができます。
しかし、本当の問題は、数値に小数があるかどうかを確認するにはどうすればよいですか?
数値をフォーマットするための taglib が既にあります: (g:formatNumber)
私はこのようなものがうまくいくはずだと思います:
<g:formatNumber number="${score}" type="number" format="###.##"/>
でも・・・それが無理なら・・・
独自のカスタム taglib を作成します。それが複数回使用されるものである場合、コントローラー内のオブジェクトのリストをループして、表示するためだけにフロートを文字列に変更するのはなぜですか? 適切なコンテキストで表示する方法をページに決定させます。
または
一時的なフィールドをドメイン オブジェクト (String scoreDisplay) に追加してから、getScoreDisplay() がスコアの値を文字列として返し、必要に応じてフォーマットします。
ええと、コントローラーで数値をフォーマットすることをお勧めします-それがgspに到達する前に。そうすれば、数値形式をより細かく制御できます。gsp に入ったら、grails の 10 進数形式を使用するか、独自の taglibを作成して形式を設定する必要があります (小数部の桁数がケースによって変わるため)。