some code
precision issue about double