https://zoheirsoftware.com/blog/double-in-csharp