gpt4 book ai didi

c - 打印 1000er 分隔值

转载 作者:行者123 更新时间:2023-11-30 17:58:17 25 4
gpt4 key购买 nike

我的功能没有按预期工作。目标是将嵌入式设备(带 LCD)上人类可读的物理单元字符串打印到缓冲区中。例如。 1234uV 应显示为 +1.234mV,其中 -100023uV 显示为 -1.000,230 V。如何通过可选的正确调整(在 uV 处)实现正确(快速且安全)的实现?

uint8 voltage_string(char* buf, int32 uVolt)
{
static const int32 VOLT = 1000000;
static const int32 MILLIVOLT = 1000;

const int32 V = uVolt / VOLT;
const int32 mV = (uVolt - V*VOLT) / MILLIVOLT;
const int32 uV = (uVolt - V*VOLT - mV*MILLIVOLT);

uint8 n = 0;

if(abs(V) > 0) {
n = sprintf(buf, "%+d", V);
n += sprintf(buf + n, ",%3d", abs(mV));
n += sprintf(buf + n, ".%3d V", abs(uV));

return n;
}

if(abs(mV) > 0) {
n = sprintf(buf, "%+d", mV);
n += sprintf(buf + n, ",%3d mV", abs(mV));

return n;
}

if(abs(uV) > 0) {
n = sprintf(buf, "%+3d uV", uV);

return n;
}

return n;
}

最佳答案

uint8_t voltage_string(char* buf, int32_t uVolt) 
{
const int32_t VOLT = 1000000;
const int32_t MILLIVOLT = 1000;
int v=0,mv=0,uv=0;
uint8_t n = 0;
v = uVolt/VOLT;
mv = (uVolt % VOLT) / MILLIVOLT;
uv = (uVolt % VOLT) % MILLIVOLT;
n = sprintf(buf, "%d.%03d%03d V", v,mv,uv);
return n;
}

关于c - 打印 1000er 分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298162/

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