可能重复:
如何在JavaScript中将数字格式化为金钱?
我有一个简单的JavaScript表单来执行即时计算.我的问题是我正在努力格式化它,以便用逗号和2位小数正确显示.
任何帮助将非常感谢.谢谢.
<p>
<label>My Daily Rate is:</label><br />
<input class="poundsBox" name="shares" id="shares" type="text" /><br />
<br />
<strong>Your Gross Contract Take Home:</strong></p>
<p><span class="result">£ <span id="result"></span></span></p>
The above illustration is provided for guidance only. Please complete the request form below for a detailed personal illustration.
<script type="text/javascript">
$("#shares").keyup(function() {
var val = parseFloat($(this).val());
// If val is a good float, multiply by 260, else show an error
val = (val ? val * 260 * 0.88 : "Invalid …Run Code Online (Sandbox Code Playgroud) 最终,代码将(最终)编译成CPU的指令.然而,代码(以我的拙见)是为了让人类阅读,更新和互动.这引出了以下观察:
其他工程师无法读取的代码,即使它的功能正常,也是错误的代码.
考虑到这一点,这个程序员可以做些什么来使人们更容易阅读代码?
命名约定?(乔尔有相当多的说法)
代码结构/布局?(请为了上帝的爱,不要进入{安置辩论)
分句?(是否可以编写看起来更像英语的代码)
举个简单的例子:文本框输入货币数据.要求是以"$ 1,234,567"格式显示用户输入并删除小数点.
我试过了vue指令.由于其他控件刷新UI时,不会调用指令的更新方法.因此,文本框中的值将恢复为没有任何格式的值.
我也试过v-on:更改事件处理程序.但我不知道如何在事件处理程序中调用全局函数.在每个Vue对象中创建货币转换方法不是一个好习惯.
那么现在Vue 2.0中标准的格式化方式是什么?
问候
免责声明:截至2011年10月14日,为了清晰起见,完全重写
鉴于number JavaScript中的原语是IEEE 754 64位浮点(在其他语言中称为双精度),并使用浮点数来模拟货币是一个坏主意,是Money原型(JavaScript)或Coffeescript类,可以简化使用伪整数美分和字符串货币ISO 4217代码表示可用的货币?
^还有更好的方式来表达这一点.
我希望找到能够反映其他许多语言的常见设计模式的东西,其中包括整数原语.
作为示例,我熟悉ruby 的money gem和python-money包,它们都实现了这种设计模式的变体.
理想情况下寻找能与backbone.js和node.js配合使用的东西,但所有建议都值得赞赏.
编辑4:据我所知,只要roundDownOrUp ? floor : ceiling在每次操作后调用Number的实现(&在链接操作之间),一切都会像处理整数那样起作用.
我读过如何在JavaScript中将数字格式化为金钱? 在那里我找到了accounting.js和jQuery Globalize,它们都做了漂亮的打印但不是为了模拟货币并用它们执行操作.
编辑1:刚刚在npm注册表中找到了知道ISO 4217的JSorm货币,但似乎没有包含浮动" 陷阱 "的任何修复.如果我有误读,请更正.
编辑2折叠成重写.
编辑3:看起来好的选择是使用@RicardoTomasi建议的node-bigint.
我想将我的javascript转换为货币编号,但使用任何货币符号
假设这是我的号码
var number = 43434;
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
43,434
Run Code Online (Sandbox Code Playgroud)
而不是这个
$43,434
Run Code Online (Sandbox Code Playgroud)
提前致谢
我将浮点数格式化为区域设置字符串(Euro),并且每个浏览器都有非常不同的结果.没有自己的功能可以修复吗?
var sum=2282.0000;
var formated_sum = Number(sum.toFixed(2)).toLocaleString("de-DE", {style: "currency", currency: "EUR"});
Run Code Online (Sandbox Code Playgroud)
Firefox结果:2.282,00€
Chrome结果:2.282€
IE结果:2.282,00€
野生动物园成绩:2282€
Safari结果非常错误,Chrome结果并没有那么糟糕.任何想法如何修复,而无需编写自己的格式化功能?
这个问题可能已经有了答案:toLocaleString()在不同浏览器中的行为不一致不,我的问题是不同的,因为我正在寻找货币的解决方案,而不是DATE
尝试在欧洲文化中将数字格式化为两位小数格式.这样逗号就是小数分隔符和空格千位分隔符.
在示例中,213245应格式化为213 245,00
我怎样才能做到这一点?
213245.toFixed(2).toLocaleString();
Run Code Online (Sandbox Code Playgroud)
给出213245.00但它应该是213 245,00
然而
213245.toLocaleString()
Run Code Online (Sandbox Code Playgroud)
给出213 245
小提琴下面:
var out, input;
input = 213245;
// TEST 1
out = input.toFixed(2);
console.log(out); // 213245.00
out = out.toLocaleString();
console.log(out); // 213245.00
// TEST 2
out = input.toLocaleString();
console.log(out); // 213 245
Run Code Online (Sandbox Code Playgroud)
在我的浏览器控制台:
> Intl.NumberFormat.supportedLocalesOf('it')
["it"]
Run Code Online (Sandbox Code Playgroud)
在我的计算机上的节点中:
> Intl.NumberFormat.supportedLocalesOf('it')
[]
Run Code Online (Sandbox Code Playgroud)
在我的同事计算机上的节点中:
> Intl.NumberFormat.supportedLocalesOf('it')
["it"]
Run Code Online (Sandbox Code Playgroud)
相同版本的节点4.5.0
Intl.NumberFormat支持应该来自哪里?您需要构建什么才能将它包含在您的节点版本中?
我正在尝试用jQuery格式化一些数字.我想获取用户的货币和编号的区域设置,以便实现正确的格式(获取小数点分隔符).
是否可以使用jQuery或JavaScript检索这些参数?
javascript jquery decimal currency-formatting regional-settings
我试图将数字转换为逗号分隔格式,每个数字在javascript中有两个小数位:
我的代码:
Number(parseFloat(n).toFixed(2)).toLocaleString('en');
Run Code Online (Sandbox Code Playgroud)
此代码不显示整数的两位小数(.00).
我期待一组数字的结果如下:
10000 => 100,00.00
123233.12 => 123,233.12
300000.5 => 300,000.50
Run Code Online (Sandbox Code Playgroud)
感谢您的回答.
javascript ×7
jquery ×3
formatting ×2
node.js ×2
backbone.js ×1
culture ×1
currency ×1
decimal ×1
locale ×1
numbers ×1
vue.js ×1