51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2075|回复: 6
打印 上一主题 下一主题

[原创] 关于函数atof,巨晕中,求解。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-20 17:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在监控tomcat时,虚拟内存可以取出来,字符串%s输出正确,但是%f 输出错误,例如:
lr_output_message("jvm s =   %s",lr_eval_string("{JVMFreeMemory}"));
lr_output_message("jvm f =  %f",atof(lr_eval_string("{JVMFreeMemory}")) );
-----
输出是: Action.c(38): jvm s =   53.85 ; Action.c(40): jvm f =  0.000000;
**************************
使用lr自带的 atof的例子:
-----
vuser_init() {

     float x;
     char *s = "7.2339 by these hilts or I am a villain else";

     x = atof(s);
     /* The %.2f formatting string limits the output to 2 decimal places */
     lr_output_message("%.2f", x);

     return 0;
}
-----
应该输出是 vuser_init.c(11): 7.23
但我的实际输出是 vuser_init.c(8): 1244136.00。
******************************
我的lr版本是9.1,tomcat是6。
哪位高手帮忙看看,先谢谢了~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-12-21 05:06:21 | 只看该作者
应将atof()函数事先声明一下!

double atof(const char *string); /* Explicit declaration */

vuser_init() {

     float x;
     char *s = "7.2339 by these hilts or I am a villian else";

     x = atof(s);
     /* The %.2f formatting string limits the output to 2 decimal places */
     lr_output_message("%.2f", x);

     return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-12-21 05:07:46 | 只看该作者
double atof(const char *string); /* Explicit declaration */


vuser_init() {

     float x;
     char *s = "7.2339 by these hilts or I am a villian else";

     x = atof(s);
     /* The %.2f formatting string limits the output to 2 decimal places */
     lr_output_message("%.2f", x);

     return 0;
}

atof函数在应用时要事先声明!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-12-21 08:44:41 | 只看该作者
欢迎高手赐教,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-12-21 09:17:45 | 只看该作者
float x;
      char *s = "7.2339 by these hilts or I am a villain else";

     double atof(const char *string);

      x = atof(s);
     /* The %.2f formatting string limits the output to 2 decimal places */
     lr_output_message("转换后的数字是%.2f", x);


这样写就没问题了,可以试试
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-12-21 09:39:20 | 只看该作者
andyguo ,高手啊!!
嘿嘿,是个什么原理呢?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-12-21 18:15:39 | 只看该作者
double atof(const char *string);是将字符串转换为浮点类型
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-21 15:45 , Processed in 0.072674 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表