老 老兵新手 新手上路 注册 2003-10-24 消息 198 荣誉分数 0 声望点数 0 2004-01-08 #1 想把一个 double 类型的变量的值转换成字符串输出? 也就是想把 double 变量的地址赋给字符串指针,由字符串指针读出 double 的十进制值 (可进行适当的转换). 但不知道 double 变量在内存中的存储规则(格式). 要求在 Windows 和 Unix 都能用. 或者: 在 Windows 上有 _fcvt(), _ecvt() 等, 是否在 Unix 上有类似的函数? 先谢了.
想把一个 double 类型的变量的值转换成字符串输出? 也就是想把 double 变量的地址赋给字符串指针,由字符串指针读出 double 的十进制值 (可进行适当的转换). 但不知道 double 变量在内存中的存储规则(格式). 要求在 Windows 和 Unix 都能用. 或者: 在 Windows 上有 _fcvt(), _ecvt() 等, 是否在 Unix 上有类似的函数? 先谢了.
Stitch 知名会员 注册 2002-07-25 消息 790 荣誉分数 1 声望点数 128 2004-01-08 #2 试试用ASCII转换一下,应该不用很复杂。ASCII无论在Windows还是Unix上都是一样。
T terrence 知名会员 注册 2002-10-23 消息 1,490 荣誉分数 13 声望点数 148 2004-01-08 #3 用sprintf() char buffer[200]; double d=12345,555; sprintf(buffer,"%d\n",d);
老 老兵新手 新手上路 注册 2003-10-24 消息 198 荣誉分数 0 声望点数 0 2004-01-09 #4 谢谢 terrence, 也谢谢 stitch, 但不知道怎么用 ASCII 转? 另外,terrence, 一个 double 类型的数转换成十进制串的最大长度应该是多少?包括指数类型和小数部分。
胡说之 Moderator 注册 2002-01-17 消息 5,182 荣誉分数 6 声望点数 0 2004-01-09 #5 sprintf()是标准C涵数,在任何OS都可以用. 想看内存里的格式,可以用printf()中的"%X", 把内容打印出来,
老 老兵新手 新手上路 注册 2003-10-24 消息 198 荣誉分数 0 声望点数 0 2004-01-09 #6 最初由 胡说之 发布 sprintf()是标准C涵数,在任何OS都可以用. 想看内存里的格式,可以用printf()中的"%X", 把内容打印出来, 点击展开... 在 debug 状态就能看到 double 变量在内存中的 8 Bytes(64-bit)的值。但这个值跟 display 和 print 出来的值并不直接对应。如果想用 char pointer 打出,必须先经过计算转换的。可不知道整数位,小数位,符号怎么确定的。 sprintf 编译后代码很长,不利于优化。如果能有 _fcvt() 一类的简单函数最好。现在先用 sprintf 代替了。 谢谢各位。
最初由 胡说之 发布 sprintf()是标准C涵数,在任何OS都可以用. 想看内存里的格式,可以用printf()中的"%X", 把内容打印出来, 点击展开... 在 debug 状态就能看到 double 变量在内存中的 8 Bytes(64-bit)的值。但这个值跟 display 和 print 出来的值并不直接对应。如果想用 char pointer 打出,必须先经过计算转换的。可不知道整数位,小数位,符号怎么确定的。 sprintf 编译后代码很长,不利于优化。如果能有 _fcvt() 一类的简单函数最好。现在先用 sprintf 代替了。 谢谢各位。
胡说之 Moderator 注册 2002-01-17 消息 5,182 荣誉分数 6 声望点数 0 2004-01-09 #7 Check the source code of Linux, see how those gurus implement sprintf(), cut the part you want.