あなたはそこまでの道のりはたくさんありますが、ここにもいくつかの誤解があります。
ローカルマクロにフォーマットを割り当てることができるという意味で、ローカルマクロをフォーマットすることはできません。あなたがしていることはdisplay
、そのマクロの値を表示する際にフォーマットを使用するように指示していますが、マクロ自体は影響を受けず、フォーマットは固執しません。実際、マクロとフォーマットが厳密な意味で関連付けられることはありません。それは完全display
にあなたの指示をまとめるコマンド、何を表示するか、そして正確にそれをどのように表示するかという問題です。
これは、他の多くの言語の同様のコマンドと基本的に違いはありません。
1つの解決策は
loc number1 12.20645161
loc number2 52.81451247
di "number 1 is " %5.4f `number1' "and number 2 is " %5.4f `number2'
=記号を省略すると、数字は文字列に相当するものとして割り当てられることに注意してください。その方法で2進数に変換して10進数に戻すことはありません。この例では、違いはありません。
その他の注意事項:
round()
疫病のようにここを避けてください。フォーマットの問題の解決策はフォーマットであり、数値演算ではありません。多くの場合動作しますが、保証されているわけではありません。ほとんどすべての10進数をバイナリとして正確に保持することはできず、場合によっては噛み付くことがあるため、常に必要なものが正確に保証されるわけではありません。
あなたはこれを行うことができます
local nice1 : di %5.4f `number1'
local nice2 : di %5.4f `number2'
di "number 1 is `nice1' and number 2 is `nice2'"
それもフォーマットを割り当てませんが、それはあなたが求める文字列操作です。
それを考える方法は次のとおりです。マクロは文字列を保持します。文字列を文字列として操作する場合は、文字列操作のみを使用してください。