40-летняя часть достаточно проста. Но чтобы получить действительно точную десятичную точку, я не уверен, как вы переводите остаток возраста в десятичное число. Вы видите, что возраст выражается в годах, месяцах, днях, часах, секундах. И расчет не так прост. Вам приходится иметь дело с юбилейными датами. Например, если кто-то родился 31 января, когда ему 1 месяц? Ответ 1 марта. Но через несколько лет это происходит через 28 дней, а через несколько лет - через 29 дней. Здесь - это реализация javascript, в которой я пытался разобраться.
Но я полагаю, что десятичное число может выражать количество дней с момента последнего дня рождения, разделенное на количество дней до следующей годовщины дня рождения. И если вы хотите получить более точную информацию, вы можете сделать это за несколько секунд, используя тот же принцип.
Но я думаю, что это плохое представление о возрасте. Мы просто обычно не представляем такой возраст.
И убедитесь, что ваши даты находятся в одном часовом поясе для ваших сравнений.