It's just another story of precision. For the first sample: a = 2/100; NIntegrate[BesselJ[15/2, BesselJZero[15/2, 1] r]^2 r, {r, 0, a}, WorkingPrecision -> 40] N[Integrate[BesselJ[15/2, BesselJZero[15/2, 1] r]^2 r, {r, 0, a}], 40] (* Let's check the difference between the above two result *) %% - % > 1.187956028197538867114723184727333535080*10^-27 > 1.187956028197538867114723184727562859206*10^-27 > -2.29324126*10^-58 For the second sample: int2 = Integrate[BesselJ[15/2, 10^-7 r]^2 r, {r, 0, a}]; Block[{$MaxExtraPrecision = 290}, N[int2, 16]] > 1.194601120645255*10^-148 To summarize, one should always keep the precision issue in mind when facing numerical calculation.