Hello Cao,
Gantt uses non-inclusive duration. Looks like, you apply the following workaround to make the duration inclusive: http://snippet.dhtmlx.com/a73af08c3
Also, there is another thing. By default, tasks snap to the nearest scale border and Gantt rounds the duration because the duration parameter can only be an integer. You cannot set a float duration.
But you can change the duration_unit to hour and use the template in the column configuration to display the float duration in the grid: