2017-01-18 29 views
0

年齢と小数点以下2桁を計算する構文は次のとおりです。この式は、誕生日が1年(10年、0ヶ月; 10.0)の場合を除いて動作します。問題は、小数点以下の桁数は何年も経たずに1年間ずっと右にシフトしていることです。 1歳は10.0、9歳は90.0と表示されます。このグリッチを修正するためのスクリプト内のガイダンスは高く評価されます!小数点以下の桁落ちグリッチ

Year (GetAsNumber (DOE)) - Year (DOB) - If (GetAsNumber (DOE) < Date (Month (DOB) ; Day (DOB) ; Year (GetAsNumber (DOE))); 1 ; 0) & (Mod (Month (GetAsNumber (DOE)) - Month (DOB) + 12 - If (Day (GetAsNumber (DOE)) < Day (DOB) ; 1 ; 0) ; 12)/12) 

答えて

0

あなたのアプローチの主な問題は、あなたが、数値+演算子を使用する必要があるときは、テキスト演算子&を使用していることです。

したがって、Mod()関数がゼロを返した場合(間隔が整数年の場合)、結果に文字列値"0"が追加されます。

私はまた、あなたが、計算を簡略化することをお勧め:この計算の結果は数ある

Let ( 
elapsedMonths = 12 * (Year (DOE) - Year (DOB)) + Month (DOE) - Month (DOB) - (Day (DOE) < Day (DOB)) 
; 
Div (elapsedMonths ; 12) + Mod (elapsedMonths ; 12)/12 
) 

。 2桁の小数点以下の桁数を表示するには、フィールドを小数点以下にフォーマットし、「小数点の固定数」オプションを選択します。


P.S.Year(),Month()およびDay()の機能には、の日付がパラメータとして必要であることに注意してください。あなたが行うと:

Year (GetAsNumber (DOB)) 

ファイルメーカーは、としてそれを実行します:

Year (GetAsDate (GetAsNumber (DOB))) 

そしてDOBはそもそも(おそらく)の日付であることから、あなただけが持っている必要がある場合、不要な型変換を配合しています単に使用しています:

Year (DOB) 
関連する問題