У меня есть аудиопроект, над которым я работаю, используя BASS из Un4seen. Эта библиотека в основном использует BYTES, но у меня есть преобразование, которое позволяет мне показывать текущую позицию песни в миллисекундах.
Зная, что MS = Samples * 1000 / SampleRate
и что Samples = Bytes * 8 / Bits / Channels
Итак, вот моя главная проблема, и она довольно проста ... У меня есть функция в моем проекте, которая преобразует миллисекунды в TimeCode за минуты: секунды: миллисекунды.
Public Function ConvertMStoTimeCode(ByVal lngCurrentMSTimeValue As Long)
ConvertMStoTimeCode = CheckForLeadingZero(Fix(lngCurrentMSTimeValue / 1000 / 60)) & ":" & _
CheckForLeadingZero(Int((lngCurrentMSTimeValue / 1000) Mod 60)) & ":" & _
CheckForLeadingZero(Int((lngCurrentMSTimeValue / 10) Mod 100))
End Function
Теперь проблема входит в подсчет секунд. Каждый раз, когда вычисление MS заканчивается .5 секунды округляется до следующей секунды. Таким образом, 1,5 секунды фактически печатаются как 2,5 секунды. Я точно знаю, что использование конверсии Int вызывает округление вниз, и я знаю, что моя математика верна, поскольку я проверял калькулятор 100 раз. Я не могу понять, почему число округляется. Есть предложения?