为何这个结构体程序得出的结果是乱码呢

为什么这个结构体程序得出的结果是乱码呢?
程序如下:

#include "stdafx.h"
#include "stdio.h"
#include "string.h"

struct fund
{
double firstyear;
double secondyear;

};

double sum(double x, double y);

int main(void)
{
struct fund TOM ;
double a; 
scanf("%f", &TOM.firstyear);
scanf("%f", &TOM.secondyear);
a = sum(TOM.firstyear, TOM.secondyear);
printf("TOM has %.2f money.\n", a);
return 0;
}

double sum(double x, double y)
{
return x+y;
}


我在黑窗口中输入20.00与30.00
结果为:
20.00 30.00
TOM has -185119209437232060000000000000000000000000000000000000000000000.00 money.
Press any key to continue

为什么会这样呢?

------解决方案--------------------
float->%f
double->%lf
------解决方案--------------------
    scanf("%lf", &TOM.firstyear);
    scanf("%lf", &TOM.secondyear);

这样即可