数字格式说明符方案
Number format specifier scheme
我正在为数字寻找一种格式说明符方案,该方案具有普遍存在的"YYYY-MM-DD"等日期格式说明符的特征。我正在寻找:
- 易于处理:格式化一个数字不需要花费太多精力(算法复杂性、性能)
- (可选)用户友好型:用户直接使用此语法非常直观
- 计算数千个分隔符和小数位数
尽管我的目标域是JavaScript(即格式化Number
实例),但我更喜欢标准的、直观的说明符方案,而不是JavaScript原生的。不,我认为printf
数字格式说明符不够直观,无法呈现给用户。
到目前为止,我提出的方案是:
#,###.##
说:
- 整个部分使用由逗号分隔的3个数字组成的组
- 使用2小数位,并使用句点作为分隔符
我对这个计划感到"恶心",在看到更好的替代方案之前,我不想在实施它上投入太多时间。
我还经历过的是,使用格式说明符,实际使用具有数千个/十进制分隔符、小数位数等不同属性的首选项对象,并通过向用户提供可供选择的样本数输出来抽象它。
我应该忘记使用格式说明符方案,而只使用在表示层抽象的一组属性吗?是否有符合我在顶部提到的3个标准的标准(ish)说明符?
归根结底,我并非没有解决方案,我有足够的东西让我继续前进。我只是在寻找一个更理想的解决方案。
XSLT是一个具有全面十进制格式方案的标准。
format-number(5351,"#,###.##")
ECMA-402是另一个标准,它具有数字格式API:
可以使用
Intl.NumberFormat
构造函数和所需的区域设置标记和选项来构造区域性敏感的NumberFormat对象。NumberFormat
对象的格式化方法可用于基于区域设置和选项集格式化数字数据。Number.prototype.toLocaleString
也已更新为在内部使用Intl.NumberFormat
进行区域性敏感格式设置,并且现在支持两个可选参数-区域设置和选项。
var number = 1123456.789;
// request a US formatted number
console.log("United States: " + new Intl.NumberFormat('en-US').format(number));
// limit to three significant digits
console.log("3 significant digits: " + new Intl.NumberFormat('en-US', { maximumSignificantDigits: 3 }).format(number));
// request a French formatted number
console.log("France: " + new Intl.NumberFormat('fr-FR').format(number));
// request a Indian formatted number
console.log("India: " + new Intl.NumberFormat('en-IN').format(number));
一个更用户友好的解决方案是类似于CFML的NumberFormat或DecimalFormat方案。
参考
使用IE11在JavaScript中构建面向世界的应用程序–IEBlog
Intl.NumberFormat-JavaScript|MDN
语言子标签查找应用
选择语言标签
W3C I18N服务器设置技术
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- 为什么$.brower被弃用?还有什么更好的替代方案
- 执行php函数的onclick事件的其他替代方案
- Android上URL方案的替代方案
- :not选择器不适用于ul类-备选方案
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- jqlite中.first()的替代方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 想在jquery中设计一个配色方案
- 在lodash上有没有一个替代方案.merge.apply(_,x);其中x是对象的数组
- 了解因子分解解决方案
- 在Javascript中使用eval的替代方案
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 数字格式说明符方案