博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手写itoa__double转int时误差
阅读量:6860 次
发布时间:2019-06-26

本文共 1166 字,大约阅读时间需要 3 分钟。

hot3.png

//itoavoid myItoa(int value, char str[60], int base){     int i=0;          while(pow(base,i)<=value){             i++;     }     int len = --i;     str[len+1] = '\0';          char c[1];           while(value>=0 && i>=0){                double dp = pow(base,i);//如果是用int p = ((int)pow(base,i)),pow(5,2)=25.0000会变成24!         int p = (int)dp;        //printf("value=%d p=%d  ",value,p);                        int div = value/p;  //as base<=10, so intValue must be less than 10          value = value%p;        //printf("div=%d mod=%d\n",div,value);                          //convert single int to char        char c[1];        sprintf(c,"%d",div);        str[len-i] = c[0];                i--;     }   }

第二个while里的逻辑冗余太多,应该是这样:

void myItoa(int value, char str[12], int base){     int i=0;          while(pow(base,i)<=value){             i++;     }     int len = --i;     str[len+1] = '\0';          char c[1];           while(value>=0 && i>=0){            int tmp = value % base;            value /= base;                          //convert single int to char        str[len-i] = tmp+'0';               i--;     }   }

转载于:https://my.oschina.net/kaneiqi/blog/192710

你可能感兴趣的文章
kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结
查看>>
kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
查看>>
SlideView 图片滑动(扩展/收缩)展示效果
查看>>
iOS开发之即时通讯之Socket(AsyncSocket)
查看>>
算法设计
查看>>
unsupported major.minor version 解决方法
查看>>
ExtJS之Ext.getDom
查看>>
数据产品设计专题(5)- 分布式数据仓库技术架构
查看>>
为什么选用 React 创建混合型移动应用?
查看>>
自己收集的关于企业数据安全,等级,备份恢复的方案等文档
查看>>
“System.Collections.Generic.IEnumerable<TestDAL.HistoryData>”不包含“ToList”的定义
查看>>
pg 函数sfa_tmp_sleep()执行越来越慢-sql分析
查看>>
关于游戏中的材质系统
查看>>
CentOS安装及配置DHCP服务器
查看>>
利用webmin修改超级管理员root用户登陆密码
查看>>
Spring Boot:定制type Formatters
查看>>
ENode框架Conference案例分析系列之 - 订单处理减库存的设计
查看>>
对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
查看>>
04.移动先行之谁主沉浮----XAML的探索
查看>>
02.移动先行之谁主沉浮----第一个通用程序
查看>>