/*
* 将一个浮点数转换为字符串
* 例如:123.456转换为"123.456"
*/
#include<stdio.h>
#include<stdlib.h>
char *convert(double d)
{
//代表浮点数d的整数部分
int d1=(int)d;
//代表浮点数d的小数部分
double d2=d-d1;
//用来存储浮点数d的整数部分
int a[20];
//用来存储浮点数d的小数部分
int b[20];
int aloc=0;
int bloc=0;
int i=0;
//将整数部分装入数组a中
while(d1>0)
{
int temp=d1%10;
a[aloc]=temp;
aloc++;
d1/=10;
}
//将小数部分装入数组b中
while(d2>0.00001)
{
d2*=10;
int temp=(int)d2;
b[bloc]=temp;
bloc++;
d2-=temp;
}
printf("aloc=%d\n",aloc);
printf("bloc=%d\n",bloc);
//申请内存空间(多申请两个空间是为了存放'.'和'\0')
char *s=(char *)malloc(aloc+bloc+2);
if(s==NULL)
{
printf("create fail!|n");
exit(1);
}
char *t=s;
while(aloc>0)
{
*t=a[aloc-1]+'0';
aloc--;
t++;
}
*t='.';
t++;
while(i<bloc)
{
*t=b[i]+'0';
i++;
t++;
}
*t='\0';
return s;
}
int main()
{
double d=123.456;
char *s=convert(d);
printf("%s\n",s);
return 0;
}
当输入double d=123.456时,输出结果为123.456
当输入double d=123.4567时,输出结果和预期的不一样,不知道为什么会产生这个bug????????????
分享到:
相关推荐
自己写的一个类,实现对字符串的检测。 可以检查字符串是否满足某种指定的类型格式, 指定的类型格式包括整型数、浮点数、布尔型、有特殊要求的字符串等, 同时允许把字符串转换成相应的数据类型, 可用于对用户输入...
1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确...
1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么...
previous up contents next C 语言常见问题集 原著:Steve Summit 翻译:朱群英, 孙 云 修订版 0.9.4, 2005年6月23日... o 8.6 我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。 ...
数字与字符串之间的自动转换 Perl的内置警告信息 标量变量 给变量取个好名字 标量的赋值 双目赋值操作符 用print输出结果 字符串中的标量变量内插 借助代码点创建字符 操作符的优先级与结合性 比较操作符 ...
我们不知道a[] 的哪一个分量会被改写,但i 的确会增加1, 对吗? . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.9 ++i 和i++ 有什么区别? . . . . . . . . . . . . . . . . . . . . . . 15 3.10 如果我不...
6.3 特殊字符串 6.3.1 全限定名 6.3.2 简单名称 6.3.3 描述符 6.4 常量池 6.4.1 CONSTANT_Utf8_info表 6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_...
6.3 特殊字符串 6.3.1 全限定名 6.3.2 简单名称 6.3.3 描述符 6.4 常量池 6.4.1 CONSTANT_Utf8_info表 6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_...
6.3 特殊字符串 6.3.1 全限定名 6.3.2 简单名称 6.3.3 描述符 6.4 常量池 6.4.1 CONSTANT_Utf8_info表 6.4.2 CONSTANT_Integer_info表 6.4.3 CONSTANT_Float_info表 6.4.4 CONSTANT_Long_info表 ...
6.3 特殊字符串 6.3.1 全限定名 6.3.2 简单名称 6.3.3 描述符 6.4 常量池 6.4.1 constant_utf8_info表 6.4.2 constant_integer_info表 6.4.3 constant_float_info表 6.4.4 constant_long_...
现在支持字符串(string)、整型(int)、浮点数(float)、及布尔型(bool)参数声明,以前只支持类名、接口、数组及Callable 两种风格:强制转换模式(默认)与严格模式 <?php // Coercive mode function sumOfInts...
5.1.2 不可变的字符串 5.1.3 字符串比较 5.2 表达式类型的陷阱 5.2.1 表达式类型的自动提升 5.2.2 复合赋值运算符的陷阱 5.3 输入法导致的陷阱 5.4 注释的字符必须合法 5.5 转义字符的陷阱 5.5.1 慎用字符...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
DATE和TIMESTAMP类型 230 1.3.3.3 TIME类型 233 1.3.3.4 YEAR类型 234 1.3.4 字符串类型 234 1.3.4.1 CHAR和VARCHAR类型 234 1.3.4.2 BLOB和TEXT类型 235 1.3.4.3 ENUM类型 236 1.3.4.4 SET...
DATE和TIMESTAMP类型 230 1.3.3.3 TIME类型 233 1.3.3.4 YEAR类型 234 1.3.4 字符串类型 234 1.3.4.1 CHAR和VARCHAR类型 234 1.3.4.2 BLOB和TEXT类型 235 1.3.4.3 ENUM类型 236 1.3.4.4 SET...