C#精确浮点变量

时间:2014-01-24 07:45:33

标签: c# variables

我编写了一个程序,它使用浮点变量,在计算了一些函数后,它没有足够精确的结果。 我的节目是

int x=0;
ts_sec = 1338526801;       
ts_usec = 113676;
while(ir<2)
{
    Console.Write("ts_sec:" + ts_sec+"\t");  
    Console.Write("ts_usec:" + ts_usec+"\t");
    if (x == 0)                          
    {  
        floatstart = ts_sec + ts_usec / 1000000; 
        Console.Write("startTime" + floatstart+"\t");
        x=x+1;  //x=1
    }             
    timeStamp = ts_sec + ts_usec / 1000000 - floatstart;                            // 
    Console.Write("timestamp is" + timeStamp+"\n");
    ts_sec = 1338526801;       
    ts_usec = 113676;
    ir++;
}

这是我的出局:

  

ts_sec:1338526801 ts_usec:113676 startTime1.338527E + 09
  时间戳是0 ts_sec:1338526801 ts_usec:113678
  时间戳是0

但我希望我的输出会像这样,我希望我的结果没有E。

  

ts_sec:1338526801 ts_usec:113676 startTime:1338526801.11368
  timeStamp:0 ts_sec:1338526801 ts_usec:113678
  时间戳:1.9073486328125e-006

2 个答案:

答案 0 :(得分:1)

首先,将float(32位)更改为double(64位),以将精度提高近两倍;第二,如果您不希望结果在科学表示(即使用“e”),请选择适当的格式

  Double startTime = ...
  // Assuming that you want 5 digits after the decimal point
  String result = startTime.ToString("F5");

答案 1 :(得分:0)

如果您想要更精确地使用decimal

  

decimal关键字表示128位数据类型。与浮点类型相比,十进制类型具有更高的精度和更小的范围,这使其适用于财务和货币计算。