php - 如何修改现有的 javascript 以显示包括美分在内的货币值?

标签 php javascript currency decimal

我正在开发的一个网站(我继承的......我不太了解 javascript)当前设置的代码是在数据库中任何数字的末尾显示“.00”(PHP 包括页面,实际上),以便它在在线表单上显示为货币。

我的客户现在想要在列表中添加一个金额,其中包括美分(5.50 美元),我需要修改或修改脚本的帮助,以便我可以包含这些非完整货币金额。

这是(我认为/推测)解决货币格式问题的脚本片段:

function CurrencyFormatted(amount)
{
    var i = parseFloat(amount);
    if(isNaN(i)) { i = 0.00; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if(s.indexOf('.') < 0) { s += '.00'; }
    if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return s;
}

有没有办法添加或更改此代码,以便我可以显示此(以及 future 类似)金额所需的具体美分?

最佳答案

该代码正在执行一些有趣的舍入操作,我无法真正解决这些问题,但要格式化小数点右侧具有固定位数的数字,请使用 toFixed数字函数:

var n = 1.2345;
n.toFixed(2); // "1.23"

请注意,它会进行舍入,因此:

(1.234).toFixed(2); // "1.23"
(1.235).toFixed(2); // "1.24"

(当您对变量调用 toFixed 时,不需要括号,但当对文字调用它时,您确实需要它们,就像我在上面两个示例中所做的那样。当然,在您的情况下,您将使用变量,因此不需要它们。)

<小时/>

在下面回复您的评论/问题:

Thanks for the quick replies! I guess I should have said I don't know javascript AT ALL, so my questions are: 1) where do I insert the codes you offer above into my existing code...

1)您在问题中引用的代码正在对输入的数字进行一系列操作,包括在尝试将其四舍五入到两位数之前添加半美分(以非常非最佳的方式)。如果现在的目标是忠实地再现输入数字的四舍五入到两位数的版本(这些都不会添加半美分的东西),您可以用以下内容替换整个函数:

function CurrencyFormatted(amount)
{
    return parseFloat(amount).toFixed(2);
}

如果你想继续加半分钱:

function CurrencyFormatted(amount)
{
    return (parseFloat(amount) + 0.005).toFixed(2);
}

...and 2) will this allow all of my existing other numbers to continue displaying as they are (e.g. "25" in my include file displays as "25.00")?

您输入到上面的任何数字(或数字字符串)都将被格式化为小数点右侧两位数字,即使这些数字是00。因此,根据上述内容,CurrencyFormatted("25") 将返回 "25.00"

...Or do I use this code you suggest to replace part or all of the sample code I posted, and thus, would I then need to change all my database numbers to accommodate this? (i.e. should I add two zeros to the end of all my whole numbers now? (25 becomes 2500, etc.)

您不需要将 .00 添加到数据库中的整数或类似的内容。

关于php - 如何修改现有的 javascript 以显示包括美分在内的货币值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331318/

相关文章:

ruby - 如何在 ruby​​ 中保留我的 float

php - Joomla 模块 “know” 可以在什么位置? (2)

javascript - 使用 Webview/javascript 的 Android 应用程序。什么是安全问题?

javascript - Three.js 全屏问题

javascript - PHP 脚本不接受来自具有 AngularJS 脚本的客户端的 GET/POST 数据

python - 确定汇率的算法

macos - 如何从货币代码中获取 "locale"?

php - 为什么我没有收到 FCGI_END_REQUEST 记录?

PHP MySQL : select from database and populate form

php - 如何使用页面弹出窗口在Mysql数据库中插入数据而不重新加载页面?