我试图根据一个人的出生日期(DOB)和评估日期(DOE)来计算实际年龄。我需要将答案表示为可以放在等式中的数字。例如,如果一个人的DOB是12/26/07且DOE是10/13/15,那么实际年龄将是7.75,而不是7; 9(7年,9个月)。小数位需要是12中的函数,而不是简单地表示月份的年龄。我已经准确地计算了这一点,但每次按时间顺序年龄配置为偶数年龄(9年0个月),计算结果显示为90,我真的需要这个" 90"成为" 9.0"有什么我可以做到配置到我的计算?目前适用于其他所有年龄的计算是:
年(GetAsNumber(DOE)) - 年(DOB) - 如果(GetAsNumber(DOE)<日期(月(DOB);日(DOB);年(GetAsNumber(DOE))); 1; 0)& ; (Mod(月份(GetAsNumber(DOE)) - 月份(DOB)+ 12 - 如果(Day(GetAsNumber(DOE))< Day(DOB); 1; 0); 12)/ 12)
谢谢!
答案 0 :(得分:0)
你的计算没问题,但你要连接两部分而不是添加它们。这就是为什么你得到一个“90”而不是“9”
此外,如果您希望它为“9.0”,则计算结果必须为数字;在布局模式下,将格式设置为十进制,并带有固定的小数位数。
Round (
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)
; 2 )
答案 1 :(得分:0)
我建议采用一种更简单的方法:
Let (
elapsedMonths = 12 * ( Year ( DOE ) - Year ( DOB ) ) + Month ( DOE ) - Month ( DOB ) - ( Day ( DOE ) < Day ( DOB ) )
;
Div ( elapsedMonths ; 12 ) + Mod ( elapsedMonths ; 12 ) / 12
)
请注意,这仅计算完全过去几个月。