为什么for结束后循环变量多了1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
    int m;
    double n, sum, b = 1.0;
    sum = 0;
    scanf("%lf", &n);
    for (m = 1; sum < n; m++)
    {
        b = b*m;
        sum += b;
    }
    printf("m<=%d\n", m );
    return 0;
}

输入100

这输出的是5不是6 是为什么呀

1*2*3*4*5=120已经大于100