c语言编辑货币,关于格式化:如何在C语言中用逗号格式化货币?
我想将Long Float格式设置为C货币。我想在开头放置一个美元符号,用逗号对小数点前的第三个数字进行迭代,并在小数点前进行一个点运算。 到目前为止,我一直在打印如下数字:
printf("You are owed $%.2Lf!
", money);
返回像
You are owed $123456789.00!
数字应如下所示
$123,456,789.00
$1,234.56
$123.45
任何答案都不必在实际代码中。 您不必喂汤。 如果有与C相关的细节会有所帮助,请提及。 其他伪代码也可以。
谢谢。
见stackoverflow.com/questions/1449805/
也谢谢你 这很有帮助。
我知道这在您的问题范围之外,但是您可能找不到通用的方法,因为将货币值存储为浮点型通常不是一个好主意。
因为可能的精度误差?
+1 @airza。 beProactive-是的,分数在以2为基数/以10为基数的转换中不能很好地发挥作用。 只将美分值存储为整数会好很多。
您的printf可能已经可以通过'标志本身来做到这一点。不过,您可能需要设置区域设置。这是我机器上的一个例子:
#include
#include
int main(void)
{
setlocale(LC_NUMERIC,"");
printf("$%'.2Lf
", 123456789.00L);
printf("$%'.2Lf
", 1234.56L);
printf("$%'.2Lf
", 123.45L);
return 0;
}
并运行它:
> make example
clang -Wall -Wextra -Werror example.c -o example
> ./example
$123,456,789.00
$1,234.56
$123.45
该程序可以在Mac(10.6.8)和我刚刚尝试过的Linux机器(Ubuntu 10.10)上以所需的方式工作。
这会在我的Ubuntu盒子上签出。 谢谢梅恩。
POSIX要求这样做-printf()
我知道这是一条古老的文章,但是今天我消失在man兔子洞的下面,所以我想记录下我的旅行记录:
您可以在monetary.h中包含一个名为strfmon()的函数,该函数可以根据本地或国际标准来执行此操作。
请注意,它的工作方式与printf()类似,并且将采用与字符串中指定的%格式一样多的double自变量。
除了我在这里拥有的功能之外,还有很多其他功能,我发现此页面最有帮助:https://www.gnu.org/software/libc/manual/html_node/Formatting-Numbers.html
#include
#include
#include
#include
int main(){
// need to setlocal(),"" sets locale to the system locale
setlocale(LC_ALL,"");
double money_amt = 1234.5678;
int buf_len = 16;
char simple_local[buf_len];
char international[buf_len];
char parenthesis_for_neg[buf_len];
char specified_width[buf_len];
char fill_6_stars[buf_len];
char fill_9_stars[buf_len];
char suppress_thousands[buf_len];
strfmon(simple_local, buf_len-1,"%n", money_amt);
strfmon(international, buf_len-1,"%i", money_amt);
strfmon(parenthesis_for_neg, buf_len-1,"%(n", money_amt);
strfmon(specified_width, buf_len-1,"%#6n", money_amt);
strfmon(fill_6_stars, buf_len-1,"%=*#6n", money_amt);
strfmon(fill_9_stars, buf_len-1,"%=*#8n", money_amt);
strfmon(suppress_thousands, buf_len-1,"%^=*#8n", money_amt);
printf("===================== Output ===================
"\
"Simple, local: %s
"\
"International: %s
"\
"parenthesis for negatives: %s
"\
"fixed width (6 digits): %s
"\
"fill character '*': %s
"\
"-- note fill characters don't
"\
"-- count where the thousdands
"\
"-- separator would go:
"\
"filling with 9 characters: %s
"\
"Suppress thousands separators: %s
"\
"================================================
",
simple_local, international, parenthesis_for_neg,
specified_width, fill_6_stars, fill_9_stars,
suppress_thousands);
/** free(money_string); */
return 0;
}
===================== Output ===================
Simple, local: $1,234.57
International: USD1,234.57
parenthesis for negatives: $1,234.57
fixed width (6 digits): $ 1,234.57
fill character '*': $**1,234.57
-- note fill characters don't
-- count where the thousdands
-- separator would go:
filling with 9 characters: $*****1,234.57
Suppress thousands separators: $****1234.57
================================================
它也是POSIX功能— strfmon()
我认为没有C函数可以执行此操作,但是您可以自己编写?说float price = 23234.45。首先用逗号打印(int)price,打印小数点;然后对于小数部分,执行printf("%d", (int)(price*100)%100);
标志呢?
c语言编辑货币,关于格式化:如何在C语言中用逗号格式化货币?相关推荐
- c语言如何输入数字,请问如何在C语言中输入数字获得拼音?
请问如何在C语言中输入数字获得拼音? 答案:1 信息版本:手机版 解决时间 2018-12-10 16:41 已解决 2018-12-10 08:20 请问如何在C语言中输入数字获得拼音? 最佳答案 ...
- c语言编程输出字母倒三角形,如何在C语言中打印倒三角形
如何在C语言中打印倒三角形 发布时间:2020-07-28 11:53:15 来源:亿速云 阅读:281 作者:Leah 这期内容当中小编将会给大家带来有关如何在C语言中打印倒三角形,文章内容丰富且以 ...
- c语言解析sql语句_如何在C语言里面执行SQL语句?
一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1)程序需要获取数据库中某数据表的字段值,并对这些字段值进行解析以执行后续操作. (2)程序需要更新数据库 ...
- 如何用C语言编辑窗口界面,「分享」C语言如何编写图形界面
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面.大家也都有回答,需要其他的库.MFC,GTK,QT. 本人近期刚用GTK库加上纯C ...
- c语言编辑学生信息录入的程序,c语言编的学生信息管理系统小程序!!有不足的请指出,谢谢!!...
c语言编的学生信息管理系统小程序!!有不足的请指出,谢谢!! #include #include #include struct st { char name[20]; int english; in ...
- C语言编辑个人信息,十万火急:用c语言打印个人信息,怎么着?
十万火急:用c语言打印个人信息,怎么着? 來源:互聯網 2010-06-29 03:19:37 評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: 老 ...
- c语言参数不能用 吗,如何在C语言中禁止“未使用的参数”警告?
您可以使用gcc / clang的未使用属性,但是我在标头中使用这些宏,以避免在整个源代码中__attribute__都有gcc特定的属性,而且到处都有点冗长/难看. #ifdef __GNUC__ ...
- 分数在c语言程序中怎么输入,如何在c语言中实现分数相加,以分数形式输出,并化为最简...
完整的C程序: #include "stdio.h" /* 分数结构 */ typedef struct { int numerator;/* 分子 */ int denomina ...
- 如何用c语言编辑盗号,想程序高手求助--用C语言来编辑一个输入密码的程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*--------实现密码的隐式输入-----------------*/ inputpw(char *password,int len) /*len为 ...
最新文章
- c++局域网主动ftp_如何在局域网中实现 ARP 攻击
- 路由器简介与IOS介绍
- rails3使用ActionMail发送邮件
- 新唐c语言怎么计算指数运算,C语言位域精解
- 分布式下的session问题
- 前端性能优化之性能测试
- 算法高级(33)-拓扑排序-maven依赖关系的确定
- 设计模式学习笔记--Flyweight享元模式
- 基于Python开发用于钞票认证的神经网络
- 微信H5(WAP)支付,遇到的那些坑
- 虚幻引擎3控制台命令
- HBase的rowKey设计技巧
- 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
- Linux正则表达式grep,egrep 及相应的正则表达式用法详解
- 一维离散余弦变换(DCT)及其反变换(IDCT)公式的一种推导
- python ocr文字识别竖排繁体_(以繁体竖排为例)OCR各种软件使用效果对照..docx...
- 分布式系统关注点——「负载均衡」到底该如何实施?
- 网络工程师加入德云社说相声,他还骑摩托车环球旅行!!
- 使用 @mention 功能构建 React 评论表单
- Android 经验: 本地 5555 端口会被 adb 误认为 emulator
热门文章
- 万豪旗下精选服务品牌MOXY中国大陆首家酒店亮相上海虹桥商务区
- 在Unity中实现读取word中的内容并打印到界面
- 地震信号滤波matlab,GABOR反褶积用于地震信号的时频分析
- Error 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT)
- 荣誉喜报!妙手ERP获得俄罗斯电商平台Ozon最佳解决方案合作伙伴!
- Go语言逐行读取文件的三种方法
- 黑莓物流解决方案BlackBerry Logistics solution
- 台式计算机显示器点不亮的原因,电脑显示器不亮有哪些原因
- 医院PACS系统:三维多平面重建操作使用
- php 正则匹配http,php url正则表达式