我编写了一个程序,它使用浮点变量,在计算了一些函数后,它没有足够精确的结果。 我的节目是
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
答案 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位数据类型。与浮点类型相比,十进制类型具有更高的精度和更小的范围,这使其适用于财务和货币计算。