C语言中如何将一个数转化为小数部分
double a=0;u8 b=150,c=125;
我想达到的效果是通过一种转换方式,将a赋值成b.c,也就是a=150.125,请问如何以最短的代码做到。 a=b+c/1000
这个1000如果是变数就单独写个函数 wp231957 发表于 2022-6-27 17:16
a=b+c/1000
这个1000如果是变数就单独写个函数
这样是不行的,c/1000的结果是0 驭剑的秘密 发表于 2022-6-27 17:22
这样是不行的,c/1000的结果是0
#include <stdio.h>
#include <stdint.h>
int main(void) {
double a = 0;
uint8_t b = 150, c = 125;
double d = c;
while(d >= 1) d /= 10;
a = b + d;
printf("%lf\n", a);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int b = 150, c = 125;
char buff;
snprintf(buff, 20, "%d.%d\0", b, c);
double a = atof(buff);
printf("%lf", a);
return 0;
} a=b+c/1000.0 本帖最后由 jhq999 于 2022-6-28 05:58 编辑
int main()
{
double a=0;
unsigned long longb=150,c=125;
a=c;
a=a/1000+b;
printf("%.3lf",a);
return 0;
}
double fun(unsigned long long b,unsigned long long c)
{
return (double)c/1000+b;
} #include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
long long b = 150, c = 125;
string a = to_string(b) + "." + to_string(c);
cout << a << endl;
return 0;
}
{:10_266:} 傻眼貓咪 发表于 2022-6-27 17:43
snprintf 是个很厉害的函数 , 学到了
string 不能用{:10_266:} 柿子饼同学 发表于 2022-6-28 07:46
snprintf 是个很厉害的函数 , 学到了
string 不能用
因为 snprintf 是 C 函数,所以只能用 char* 类型,想在 C++ std::string 用,可以试试初始化方法:#include <iostream>
#include <cstring>
using namespace std;
int main(void) {
char buff;
snprintf(buff, 19, "I love fishC");
string str(buff, buff + strlen(buff));
cout << str << endl;
return 0;
} 人造人 发表于 2022-6-27 17:22
谢谢,我最后使用的是强制转换,a=(double)b+((double)c/1000); 柿子饼同学 发表于 2022-6-28 07:27
谢谢,我目前还在学C ExiaGN001 发表于 2022-6-27 21:57
a=b+c/1000.0
谢谢,你这个才是最佳,我之前没看见{:5_100:} 傻眼貓咪 发表于 2022-6-27 17:43
谢谢 傻眼貓咪 发表于 2022-6-28 08:25
因为 snprintf 是 C 函数,所以只能用 char* 类型,想在 C++ std::string 用,可以试试初始化方法:
学到了
页:
[1]