C# 浮点值在从双精度转换后释放数据

C# 浮点值在从双精度转换后释放数据,c#,type-conversion,C#,Type Conversion,我有一个双变量,表示从1900年1月1日起从ntp服务器经过的秒数,它打印ok 3616290958.594 3616290959.611 3616290960.538 我试着用不同的方法把它转换成一个浮点数,比如System.convert.ToSingle和regular casting,但我总是得到 3,616,291,000.00 我使用它的.ToString(“N”)方法打印浮点值,如果它有区别的话 我甚至试着把double转换成long,然后把long转换成float(我不需要点

我有一个双变量,表示从1900年1月1日起从ntp服务器经过的秒数,它打印ok

3616290958.594
3616290959.611
3616290960.538
我试着用不同的方法把它转换成一个浮点数,比如System.convert.ToSingle和regular casting,但我总是得到

3,616,291,000.00
我使用它的.ToString(“N”)方法打印浮点值,如果它有区别的话

我甚至试着把double转换成long,然后把long转换成float(我不需要点后面的任何精度数据,我要在转换之前把double转换成float)


什么都不管用,请帮助。

您可以简单地使用
数学。截断

例如:

Double d = 3616290958.594;
string k = Math.Truncate(d);

您应该添加一个代码段,该代码段从从ntp服务器接收的实际数据样本开始,生成显示的输出。浮点的最大精度为7位。如果我们知道为什么需要将其转换为float,也许我们可以找到另一种解决方案?我使用unity PlayerRefs将其保存为用户上次玩游戏时的状态,PlayerRefs只能保存float、int和string您可以使用下面发布的Neverholess解决方案(仅存储字符串),或者可以存储一个DateTime对象,然后将其转换为字符串。