驭剑的秘密 发表于 2022-6-27 16:49:54

C语言中如何将一个数转化为小数部分

double a=0;
u8 b=150,c=125;
我想达到的效果是通过一种转换方式,将a赋值成b.c,也就是a=150.125,请问如何以最短的代码做到。

wp231957 发表于 2022-6-27 17:16:57

a=b+c/1000
这个1000如果是变数就单独写个函数

驭剑的秘密 发表于 2022-6-27 17:22:08

wp231957 发表于 2022-6-27 17:16
a=b+c/1000
这个1000如果是变数就单独写个函数

这样是不行的,c/1000的结果是0

人造人 发表于 2022-6-27 17:22:56

驭剑的秘密 发表于 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;
}

傻眼貓咪 发表于 2022-6-27 17:43:21

#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;
}

ExiaGN001 发表于 2022-6-27 21:57:31

a=b+c/1000.0

jhq999 发表于 2022-6-28 05:53:39

本帖最后由 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;
}

柿子饼同学 发表于 2022-6-28 07:27:28

#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-28 07:46:04

傻眼貓咪 发表于 2022-6-27 17:43


snprintf 是个很厉害的函数 , 学到了
string 不能用{:10_266:}

傻眼貓咪 发表于 2022-6-28 08:25:12

柿子饼同学 发表于 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-28 09:46:34

人造人 发表于 2022-6-27 17:22


谢谢,我最后使用的是强制转换,a=(double)b+((double)c/1000);

驭剑的秘密 发表于 2022-6-28 09:47:31

柿子饼同学 发表于 2022-6-28 07:27


谢谢,我目前还在学C

驭剑的秘密 发表于 2022-6-28 09:50:11

ExiaGN001 发表于 2022-6-27 21:57
a=b+c/1000.0

谢谢,你这个才是最佳,我之前没看见{:5_100:}

驭剑的秘密 发表于 2022-6-28 09:50:47

傻眼貓咪 发表于 2022-6-27 17:43


谢谢

柿子饼同学 发表于 2022-6-28 10:07:59

傻眼貓咪 发表于 2022-6-28 08:25
因为 snprintf 是 C 函数,所以只能用 char* 类型,想在 C++ std::string 用,可以试试初始化方法:

学到了
页: [1]
查看完整版本: C语言中如何将一个数转化为小数部分