c - 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;
}
这些是我完成的代码,当然,它并没有按照我想要的方式工作。
抱歉英语和编程能力差。
解决方案
看看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
}
推荐阅读
- php - Symfony - 日期时间作为参数
- c# - 通过 Sql 存储过程在 ASP.Net MVC 模型中保存多个结果集而不使用 DataSet
- amazon-web-services - 如何在aws上创建子域并从godaddy dns域指向它
- java - 如何在线程中使用 SensorManager 正确实现传感器?
- postgresql - 在函数中更改模式名称
- python - 我可以更有效地拆分包含元组/无混合的列吗?
- flutter - 如果启用则切换
- c# - HttpClient POST 与数据
- java - 使用 ISO 4217 的 CurrencyCode 格式化 pl_PL 价格
- mysql - 将 mysql-db 挂载到 docker-container