Я пытаюсь сделать небольшое разбиение, разделив записи списка на 6-месячные блоки. Используя этот запрос LINQ to Entities, я получаю результаты, которые подразумевают, что целочисленное деление не происходит:
from e in enrollments
let AgeInHalfYears = e.AgeMonths / 6
select new { e.AgeMonths ,
AgeInHalfYears,
AgeFloor = ((int)AgeInHalfYears) * 6 }
Мои результаты:
AgeMonths AgeInHalfYears AgeFloor
68 11 68
41 7 41
34 6 34
Я бы ожидал 66, 36 и 30 в этом последнем столбце.
Я переписал LINQ довольно просто:
AgeFloor = e.AgeMonths - (e.AgeMonths% 6)
Но мне все еще любопытно, почему операция деления является явно плавающей точкой, даже с этим (int) приведением там ... Я бы не ожидал этого.