基本功能完成，添加负数与小数支持，详见源码内注释