我是怎么失去精度的

#include<bits/stdc++.h>
using namespace std;
/*
简单数学:概率、期望 
格式输出、精度 
*/ 
int n,x,a,b;
double ans;
int main(){
    scanf("%d%d%d%d",&n,&x,&a,&b);
    ans=n*(x*a*1.0+(100-x)*b*1.0)/100; 
//错解: ans=n*(x*a+(100-x)*b)/100; 
//此时ans为整数,按照.2,z则不论什么均出.00, 即失精 
    printf("%.2lf",ans);
    return 0;
}