| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4118 人关注过本帖
标题:[求解] 只想把数值(保留小数点后两位),存到变数里(不是用printf)
只看楼主 加入收藏
timtimN
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-7-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:17 
[求解] 只想把数值(保留小数点后两位),存到变数里(不是用printf)
例如:
float kt = 40.536738;

希望把它变成 40.54 再存到变数中,
即:a的值为40.54
搜索更多相关主题的帖子: 数值 保留 小数点 printf float 
2017-07-25 15:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
这种想法本身就是……
如果你真有这种需求,就不会用浮点型,而是用整型,其数值逻辑单位是0.01
2017-07-25 15:38
timtimN
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-7-25
收藏
得分:0 
抱歉,我是新手﹐方便用一个简单的例子来说明吗?因为宣告了整型,它的值就变成41了,所以不太懂指的数值逻辑单位是指什么。
2017-07-25 15:50
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
*100/100

DO IT YOURSELF !
2017-07-25 15:54
timtimN
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-7-25
收藏
得分:0 
回复 4楼 wp231957
是的,但不希望小数点两位后有0存在。还有其他方法吗?
2017-07-25 20:41
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
浮点寄存器里面的数据是无法改动的

唯一能变通的就是 我们如何把一串浮点数显示出来

DO IT YOURSELF !
2017-07-26 08:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
    float kt = 40.536738;
    int a=(int)(kt*1000);
    float b=a/10.0;
    int c=(int)(b+0.5);
    float d=c/100.0;

DO IT YOURSELF !
2017-07-26 08:39
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:4 
这个可以利用sprintf()函数给变量格式化赋值
函数功能:把格式化的数据写入某个字符串
函数原型:int sprintf( char *buffer, const char *format [, argument] … );
返回值:字符串长度(strlen)


float kt = 40.536738;
char* s = NULL;
sprintf(s,"%.2f",kt);
如果要再使用的话再利用将字符串转换成数字函数atof
即 float target = atof(s); //40.54

哈哈,虽然有点麻烦,但还是很好用的。主要是格式化字符串
2017-07-26 09:12
timtimN
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-7-25
收藏
得分:0 
回复 6楼 wp231957
原来如此,那想再问如果想要把两个值放到if()判断的话,怎么做会比较好?
2017-07-26 10:20
timtimN
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-7-25
收藏
得分:0 
回复 8楼 GBH1
程序代码:
#include<stdio.h>
#include<stdlib.h>

int main()
{
    float kt = 40.536738;
    char* s = NULL;
    sprintf(s,"%.2f\n",kt); 
    printf("%d\n", s);
    float target = atof(s);
    printf("%f\n", target);
    return 0;

 } 

结果是:
0
0.000000


好像是没办法的...

[此贴子已经被作者于2017-7-26 10:23编辑过]

2017-07-26 10:22
快速回复:[求解] 只想把数值(保留小数点后两位),存到变数里(不是用printf)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058062 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved