首页 > 解决方案 > C 如何将逗号放入浮点数?

问题描述

我想像这样将逗号放入浮点数:输入:12345.678 输出:$12,345.678

我已经看到了使用 char[] 来解决这个问题的解决方案,但是如果我只想使用浮点数怎么办?

#include<stdio.h>
#include<stdlib.h>

int main(void){
  double num;
  printf("Please enter a float: ");
  scanf("%lf", &num);
  do{
    num/=1000;
  }
  while(num >= 1000);
  printf("$%f",num);

  system("PAUSE");
  return 0;
}

这些是我完成的代码,当然,它并没有按照我想要的方式工作。

抱歉英语和编程能力差。

标签: ccomma

解决方案


看看strfmon

如果你真的想拥有自己的代码,你可以使用它。

#include <stdio.h>
#include <string.h>

void sprintf_money(char* buf, double num) {
  sprintf(buf, "%ld", (long)(num * 100));
  memmove(&buf[strlen(buf) - 1], &buf[strlen(buf) - 2], 3);
  buf[strlen(buf) - 3] = '.';

  char* p = &buf[strlen(buf) - 3];
  while (p - 3 > buf) {
    p = p - 3;
    memmove(p + 1, p, strlen(p) + 1);
    *p = ',';
  }
}


int main() {
  char buf[100];
  sprintf_money(buf, 1234512345.678);
  puts(buf); // output: 1,234,512,345.67
}

如果可以使用c++,还有另一种方式:

#include <iostream>
#include <iomanip>

int main()
{
    double mon = 12345.67;

    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << std::put_money(mon * 100) << "\n"; // output: 12,345.67
}

推荐阅读