我正在尝试根据一个人的出生日期(道布)和评估日期(DOE)计算一个按时间顺序排列的年龄。我需要将答案表示为一个可以放在方程式中的数字。例如,如果一个人的道布是12/26/07,DOE是10/13/15,那么按时间顺序排列的年龄将是7.75,而不是7;9 (7岁9个月)。小数位需要是12中的一个函数,而不是简单地表示以月为单位的年龄。我已经准确地计算了这一点,但是每次按时间顺序的年龄被配置为偶数年龄(9岁0个月)时,计算结果显示为90,我真的需要这个"90“为"9.0”,我可以做些什么来将其配置到我的计算中吗?目前适用于其他年龄段的计算是:
年( DOE ( DOE )) -年(道布)- If (日( DOE )<日(月(道布);日(道布);年( GetAsNumber ( DOE ));1;0)&( Mod (月( GetAsNumber ( DOE ))-月(道布)+ 12 - If (日( GetAsNumber (DOE))<日(道布);1;0)/ 12)
谢谢!
发布于 2016-11-19 04:56:11
您的计算是正确的,但是您正在连接两个部分,而不是将它们相加。这就是为什么你得的是"90“而不是"9”
此外,如果您希望它是"9.0",则计算结果必须是数字;在布局模式中,将格式设置为带有固定小数的decimal。
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 )发布于 2016-11-19 08:55:03
我建议一种更简单的方法:
Let (
elapsedMonths = 12 * ( Year ( DOE ) - Year ( DOB ) ) + Month ( DOE ) - Month ( DOB ) - ( Day ( DOE ) < Day ( DOB ) )
;
Div ( elapsedMonths ; 12 ) + Mod ( elapsedMonths ; 12 ) / 12
)请注意,这只计算完全经过的月份。
https://stackoverflow.com/questions/40641135
复制相似问题