标题:[求解] 只想把数值(保留小数点后两位),存到变数里(不是用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
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
浮点寄存器里面的数据是无法改动的

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

DO IT YOURSELF !
2017-07-26 08:29
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479604-1-1.html




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

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