关于指数形式格式输出问题

hotpot12342003 2009-09-16 06:42:38
举个例子吧,在VC里,我想把2.134e+003输出为格式0.2134e+004,也就是让前面的底数小于1,应该怎么实现啊,谢谢各位大侠~
...全文
254 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotpot12342003 2009-09-16
  • 打赏
  • 举报
回复
哦,谢谢各位了
Gothic_girl 2009-09-16
  • 打赏
  • 举报
回复
自己写,可以在sprintf的基础上修改一下就好
晨星 2009-09-16
  • 打赏
  • 举报
回复
printf和gcvt貌似都没这功能,恐怕得自己写了。

#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

string format_double(double d);

int main() {
double d = 2.134e+003;
cout << format_double(d) << endl;
return 0;
}

string format_double(double d) {
int dec = 0;
int sign = 0;
char* s = _ecvt(d, 6, &dec, &sign);

int off = 0;
char buf[16] = "";
if(sign) {
buf[off++] = '-';
}
off += sprintf(buf + off, "0.%s", s);
while(buf[off - 1] == '0' && buf[off - 2] != '.') --off;

buf[off++] = 'e';
sprintf(buf + off, "%d", dec);
return buf;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧