c++得二进制文件读写!

前面得写操作是没有问题得,在于后面得读操作!我是想读出20°30°得度数以及他们的sin,cos但是读出得结果是显示度数会从029不知道问题在哪里,也用过seekg进行定位还是不行!


#include <iostream>
#include <fstream>
#include <cmath>
#define pi 3.14
#include <iomanip>
using namespace std;
int main()
{
    fstream infile;
    int i,x,y;
    infile.open("sincos.bin",ios::out|ios::in|ios::binary);
    if(!infile)
    {
        cout<<"error"<<endl;
        exit(1);
    }
    for( i=0;i<90;i++)
    {
        infile.write((char *)&i,sizeof(int));
        x=sin((i/180)*pi);
        y=cos((i/180)*pi);
        infile.write((char *)&x,sizeof(double));
        infile.write((char *)&y,sizeof(double));
    }
    //long pos=infile.tellp();
    //cout<<pos;
    infile.close();
    cout<<"度数"<<setw(5)<<"sin"<<setw(5)<<"cos"<<endl;
    infile.open("sincos.bin",ios::in|ios::out|ios::binary);
        if(!infile)
    {
        cout<<"error"<<endl;
        exit(1);
    }
    for(i=20;i<30;i++)
    {
        infile.read((char *)&i,sizeof(int));
        infile.read((char *)&x,sizeof(double));
        infile.read((char *)&y,sizeof(double));        
        cout<<i<<setw(5)<<x<<setw(5)<<y<<endl;
    }    
    infile.close();
    return 0;
 } 

img