From 9a6fd7bebcc78a447ae0fed565be29785b4c3613 Mon Sep 17 00:00:00 2001 From: Justin King Date: Mon, 30 Sep 2024 14:53:43 -0400 Subject: [PATCH] Add seconds to FixTime as Ticks in order to preserve sub-second precision that can get lost by using doubles --- src/NmeaParser/Nmea/Rmc.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NmeaParser/Nmea/Rmc.cs b/src/NmeaParser/Nmea/Rmc.cs index 171bc39..d0bf862 100644 --- a/src/NmeaParser/Nmea/Rmc.cs +++ b/src/NmeaParser/Nmea/Rmc.cs @@ -47,10 +47,10 @@ namespace NmeaParser.Messages var day = int.Parse(message[8].Substring(0, 2), CultureInfo.InvariantCulture); var hour = int.Parse(message[0].Substring(0, 2), CultureInfo.InvariantCulture); var minute = int.Parse(message[0].Substring(2, 2), CultureInfo.InvariantCulture); - var seconds = double.Parse(message[0].Substring(4), CultureInfo.InvariantCulture); + var secondTicks = (long)(decimal.Parse(message[0].Substring(4), CultureInfo.InvariantCulture) * TimeSpan.TicksPerSecond); FixTime = new DateTimeOffset(year, month, day, hour, minute, 0, TimeSpan.Zero) - .AddSeconds(seconds); + .AddTicks(secondTicks); } Active = (message[1] == "A"); Latitude = NmeaMessage.StringToLatitude(message[2], message[3]);