gpt4 book ai didi

将字符数组转换为具有 2 个小数位的 float

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:44 24 4
gpt4 key购买 nike

我定义了这样一个字符数组。

char pkgamount[20]="";    

这可以由 120、-120、-120.23 等值填充(最多 2 位小数)

我目前像这样将 char 数组转换为整数。

    int amt2;
sscanf(pkgamount, "%d", &amt2);

将可以包含负小数的字符数组转换为只有 2 位小数的浮点值的正确方法是什么?

更新:#1

我从数据库 (VARCHAR) 读取值到字符数组。这些值最多有 2 位小数。该值可以是 0/有 2 位小数/没有小数位。我认为整数数据类型不能有小数位。我需要添加/减去这些值。所以我需要将字符数组转换为 float 。

更新 #2

我尝试使用 float 并不断得到一些随机输出。请提取下面的代码

float bamt1,bamt2,amt1,amt2;
float balance1,balance2;
sscanf(stbamount, "%f", &amt1);
sscanf(pkgamount, "%f", &amt2);
//amoun1=32 amount2=23 any decimal or non decimal values..using API
//Using API on device to read this..skipping the code for that
sscanf(amount1, "%f", &bamt1);
sscanf(amount2, "%f", &bamt2);
balance1=amt1-bamt1;
balance2=amt2-bamt2;
// buffers used for conversion and printing
char buf1[sizeof(int)*3+2]="";
snprintf(buf1, sizeof buf1, "%f", balance1);
char buf2[sizeof(int)*3+2]="";
char sbal[20]="";
char pbal[20]="";
strcat(sbal,"STB Balance: ");
strcat(pbal,"PKG Balance: ");
strcat(sbal,buf1);
strcat(pbal,buf2);
//prn_write_text is API Call to run thermal printer on device
prn_write_text(sbal,strlen(sbal),1);
prn_write_text(pbal,strlen(pbal),1);
snprintf(buf2, sizeof buf2, "%f", balance2);

更新 #3

这是使用热敏打印机写入一些文本的 API 调用。我需要将浮点值转换为字符串并将其剪切,以便它只包含 2 个十进制值。

enter image description here

最佳答案

使用 float 来存储数字..

float amtf;
sscanf(pkgamount, "%f", &amtf);

将数字打印到小数点后两位

printf (".2%f",amtf);

只要您愿意在加法或减法过程中容忍可能出现 0.01 的误差,就可以使用 float 来存储数字。它使代码更容易。

但是,如果您绝对必须精确到最后的 0.00,那么您应该按照 M Oehem 的建议使用整数 * 100 来存储数据。

关于将字符数组转换为具有 2 个小数位的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36077757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com