user24447: Can arduino generate the frequency with the resolution of 2 decimal places? 
i.e. 100.12 Hz, 98.23Hz, 1.92Hz...
recently I need to generate a frequency to allow a stepper motor to move accordingly. But to ensure the stepper motor to functions normally, frequency must be generated , and it must be of 2 decimal places. 
Can Arduino do that? Or is there any specific product that may generate frequency resolution as such?

user22924: The standard Arduino Uno is clocked at a nominal 16MHz, and has three timers: Timer0, 1 and 2. Timer1 uses a 16 bit counter (the others are 8 bit), and can be prescaled by 1, 8, 64, 256 and 1024. That lets you do very precise timings (assuming an accurate clock!), simply by choosing different prescaler values and the relevant values.
Using your example rates, and assuming that you want a square wave (hence the "Halved" column), here are the calculations:
 Hertz Prescaler  Calculated      Halved  Actual Hz
100.12         8  19976.02876548   9,988  100.120144173...
 98.23         8  20360.3787      10,180   98.231827112...
  1.92       256  32552.08333333  16,276    1.9200049...

Note that to do this, you need to program the Timer yourself - the standard Arduino library sets Timer1 to a default setting, which won't do what you want.

user24400: I happened to do a similar analysis for Timer 1 on 328 / 32U4 clocked at 16MHz the other day and produced this plot:

This shows the frequency resolution as a proportion of frequency in red assuming optimal prescaling (the jumps are where prescale changes). The blue markers are realized frequency errors at frequencies drawn at the E12 series in magnitudes from 0 to 5. Unsurprisinly these are half or better than the resolution.
As a conclusion, you get a relative error of around 5e-5 for frequencies up to about 1kHz. After that you loose an order of magnitude per order of magnitude (which of course makes perfect sense).

user10794: The other answers about the way you can configure the timers are very good, but Edgar Bonet's comment goes to the heart of the matter. Do you need accuracy?
Your example of 98.23Hz suggests that you want 98.23Hz and not 98.22Hz or 98.24Hz. That means therefore that you require an accuracy of around 1 in 10000 (0.01%).

Can arduino generate the frequency ...

You haven't said which Arduino, but assuming one of the basic models, like the Uno, they come with a resonator which will have an accuracy of around 1%.
If the system clock is only good for 1% accuracy there isn't much point worrying about trying to get a frequency within 0.01%.

24447: <p>Can arduino generate the frequency with the resolution of 2 decimal places? 
i.e. 100.12 Hz, 98.23Hz, 1.92Hz...</p>

<p>recently I need to generate a frequency to allow a stepper motor to move accordingly. But to ensure the stepper motor to functions normally, frequency must be generated , and it must be of 2 decimal places. </p>

<p>Can Arduino do that? Or is there any specific product that may generate frequency resolution as such?</p>
 22924: <p>The standard Arduino Uno is clocked at a nominal 16MHz, and has three timers: Timer0, 1 and 2. Timer1 uses a 16 bit counter (the others are 8 bit), and can be prescaled by 1, 8, 64, 256 and 1024. That lets you do <em>very</em> precise timings (assuming an accurate clock!), simply by choosing different prescaler values and the relevant values.</p>

<p>Using your example rates, and assuming that you want a square wave (hence the "Halved" column), here are the calculations:</p>

<pre><code> Hertz Prescaler  Calculated      Halved  Actual Hz
100.12         8  19976.02876548   9,988  100.120144173...
 98.23         8  20360.3787      10,180   98.231827112...
  1.92       256  32552.08333333  16,276    1.9200049...
</code></pre>

<p>Note that to do this, you need to program the Timer yourself - the standard Arduino library sets Timer1 to a default setting, which won't do what you want.</p>
 24400: <p>I happened to do a similar analysis for Timer 1 on 328 / 32U4 clocked at 16MHz the other day and produced this plot:</p>

<p><a href="https://i.stack.imgur.com/CqQQY.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CqQQY.png" alt="Timer 1 Frequency Error Bound"></a></p>

<p>This shows the frequency resolution as a proportion of frequency in red assuming optimal prescaling (the jumps are where prescale changes). The blue markers are realized frequency errors at frequencies drawn at the E12 series in magnitudes from 0 to 5. Unsurprisinly these are half or better than the resolution.</p>

<p>As a conclusion, you get a relative error of around 5e-5 for frequencies up to about 1kHz. After that you loose an order of magnitude per order of magnitude (which of course makes perfect sense).</p>
 10794: <p>The other answers about the way you can configure the timers are very good, but Edgar Bonet's comment goes to the heart of the matter. Do you need accuracy?</p>

<p>Your example of 98.23Hz suggests that you want 98.23Hz and not 98.22Hz or 98.24Hz. That means therefore that you require an accuracy of around 1 in 10000 (0.01%).</p>

<blockquote>
  <p>Can arduino generate the frequency ...</p>
</blockquote>

<p>You haven't said <em>which</em> Arduino, but assuming one of the basic models, like the Uno, they come with a <em>resonator</em> which will have an accuracy of around 1%.</p>

<p>If the system clock is only good for 1% accuracy there isn't much point worrying about trying to get a frequency within 0.01%.</p>
