Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 程序将小数点四舍五入为指数,这是我不想要的_C - Fatal编程技术网

C 程序将小数点四舍五入为指数,这是我不想要的

C 程序将小数点四舍五入为指数,这是我不想要的,c,C,我有一个文件,里面有这样的数据 USDINR12AUGFUT 581344396605627906 2012-08-08 09:00:05贸易55.1600255179.50839 USDINR12AUGFUT 591344396605627910 2012-08-08 09:00:05贸易55.1600 在我的C代码中,我通过这一行从文件中读取这些数据 void as(char line[300]) { sscanf(line,"%s %lf %lf %lf %s %s %s %lf

我有一个文件,里面有这样的数据

USDINR12AUGFUT 58
1344396605
627906 2012-08-08 09:00:05贸易55.1600255179.50839 USDINR12AUGFUT 59
1344396605
627910 2012-08-08 09:00:05贸易55.1600

在我的C代码中,我通过这一行从文件中读取这些数据

void as(char line[300])
{
    sscanf(line,"%s %lf %lf %lf %s %s %s %lf %ld %lf %ld",symbol, &trade_no, &utc_sec,&utc_nano,date,time,trade_type,&ltp,&ltq,&vwap,&volume);
        if (!strcmp(trade_type,"BID"))
        {
        cout<<endl;
        printf("%s %lf %lf %lf %s %s %s %lf %ld %lf %ld\n",symbol,trade_no,utc_sec,utc_nano,date,time,trade_type,ltp,ltq,vwap,volume);

//      cha/i);
        }

        else if (!strcmp(trade_type,"ASK"))
        {
        cout<<endl;
        printf("%s %lf %lf %lf %s %s %s %lf %ld %lf %ld\n",symbol,trade_no,utc_sec,utc_nano,date,time,trade_type,ltp,ltq,vwap,volume);
//      char li[100] = "Only Ask.txt";
//      wr(li);
        }

        else if (!strcmp(trade_type,"TRADE"))
        {
        cout<<endl;
        printf("%s %lf %lf %lf %s %s %s %lf %ld %lf %ld\n",symbol,trade_no,utc_sec,utc_nano,date,time,trade_type,ltp,ltq,vwap,volume);


//          char li[100] = "Only Trades.txt";
//          wr(li);
        }
void as(字符行[300])
{
sscanf(行“%s%lf%lf%lf%s%s%lf%ld%lf%ld”、符号、交易编号、utc秒、utc纳米、日期、时间、交易类型、ltp、ltq、vwap和交易量);
如果(!strcmp(交易类型,“投标”))
{

cout我认为您不想在这些字段中的很多字段中使用float。除非您准备接受交易编号中的舍入错误,Utc秒(秒),Utc纳米(可能是纳秒)

在这种情况下,您需要更改这些字段的类型以匹配,并使用不同的scanf字符串来指示您正在读取(可能是long或long)整数


此外,您似乎在所有这些字段中使用全局变量,这不是一个好主意。

我认为您不想在这些字段中的很多字段中使用浮点值。除非您准备接受交易编号中的舍入错误,Utc秒(秒),Utc纳米(大概是纳秒)

在这种情况下,您需要更改这些字段的类型以匹配,并使用不同的scanf字符串来指示您正在读取(可能是long或long)整数


此外,您似乎正在使用全局变量来实现所有这些,这不是一个好主意。

显然,您有一个不同寻常的printf实现。它应该可以工作,但显然不行

%f
对于float或double类型应该是正确的。您应该只获得带有
%g
%e
的指数。顺便说一句,
%lf
应该与
%f
相同

您可以尝试添加精度修改器:

printf("%100.20f", utc_sec);
该示例应给出最小字段宽度为100个字符,最大精度为20位。当然,这些数字完全是疯狂的,但也许你会发现一个有效的技巧


如果你没有亚秒级的精度,那么就不需要浮点类型;整数将提供更大的范围,如果你不打算对其进行数学运算,字符串将提供更好的范围。

显然你有一个不同寻常的printf实现。它应该可以工作,但显然不行

%f
对于float或double类型应该是正确的。您应该只获得带有
%g
%e
的指数。顺便说一句,
%lf
应该与
%f
相同

您可以尝试添加精度修改器:

printf("%100.20f", utc_sec);
该示例应给出最小字段宽度为100个字符,最大精度为20位。当然,这些数字完全是疯狂的,但也许你会发现一个有效的技巧


如果你没有亚秒级的精度,就真的不需要浮点类型了;整数会给出更大的范围,如果你不打算对它进行数学运算,字符串会给出更好的范围。

ya我试过使用long,它工作了。..initialy“long”不起作用我试过使用long,它工作了。..initialy“long”不起作用