У меня есть Windows, FILETIME:Округление FILETIME в C# для размещения FAT округления
64-битное значение, представляющее количество 100-наносекундных интервалов с 1 января 1601 (UTC))
и мне нужно округлить UP до ближайшего даже второго, как описано here.
код у меня до сих пор:
var originalDt = DateTime.FromFileTimeUtc(input);
// round it UP to the nearest Second
var newDt = originalDt.AddMilliseconds(1000 - originalDt.Millisecond);
// then if our new Second isn't even
if (newDt.Second % 2 != 0)
{
// add one second to it, then it'll be even
newDt = newDt.AddSeconds(1);
}
return newDt.ToFileTimeUtc();
не совсем работа ... получается 130790247821478763 в 130790247820008763, я после 130790247800000000.
Математика не моя самая сильная тема. .. могу ли я просто сбросить эти последние четыре цифры безопасно? Или я должен забыть приведенный выше код и полностью удалить последние восемь цифр? Или ... по-другому?
округлить до кратного N с 'value = N * (значение/N + N-1)' –