Javascript 分离和裁剪以及四舍五入
Posted
技术标签:
【中文标题】Javascript 分离和裁剪以及四舍五入【英文标题】:Javascript separation and cropping and round digits 【发布时间】:2016-10-24 15:41:08 【问题描述】:我对这个简短的脚本有疑问。脚本必须显示像这样的数字 10 987.23 或 10 987(点后是否有 2 个符号),但显示 NaN。我做错了什么?
<script>
var dohzavershen = "10 987.23456457457"; // corrected
dohzavershen = dohzavershen.replace(/.+?(?=\D|$)/,
function(f)
return f.replace(/(\d)(?=(?:\d\d\d)+$)/g, "$1 ")
;
);
document.write(Number(dohzavershen).toFixed(0));
<script>
【问题讨论】:
您正在将字符串转换为不是数字的有效表示形式,然后尝试将其解析为数字。这就是你得到 NaN 的原因。 @JLRishe 但在这个字符串中是一个数字 (var dohzavershen = "10 987.2345789099888"; 它仍然不是 javascript 中的有效数字。数字中不能有空格。Number("10 987.23456457457")
计算结果为 NaN
。
@SergNuvels 有效数字在 JavaScript 中没有空格。
您尝试使用的方法没有任何意义。 toFixed()
返回一个数字,表示为一系列没有分隔符的数字,可选地后跟一个小数点和更多数字。您要做的是将字符串转换为您想要的数字格式,然后将其转换为数字,然后调用.toFixed()
。没有办法行得通。你需要想出一种不同的方法。
【参考方案1】:
var dohzavershen = "10 987.23456457457"; // corrected
function formatter(n, k)
var split = n.split('.');
if (split.length > 1)
split[split.length-1] = split[split.length-1].substring(0, k);
return k > 0 ? split.join('.') : split[0];
formatter(dohzavershen, 2)
这样的事情可能会奏效。但请注意,这不会对数字进行四舍五入,而只是选择小数点后的前两位。 k>0 只是为了确保你没有得到“1234”,你可以用任何你认为合适的方式来处理它
【讨论】:
谢谢,但没用。圆形对我来说很重要。那是个问题..这个完整的代码 """ var oriprice = $origprice; document.write(Number(oriprice).toFixed(0)); """ 工作完美,但不要四舍五入.. 我不明白如何解决我的问题( 没用是什么意思?我认为你的数字之间的空间很重要。有了它,尝试将其转换为数字将不起作用。 完整代码看起来像 php $resultoursalerealpricesum = mysql_query("SELECT SUM(order_price) fromtbl_orders WHERE status='Завершен'"); if ($topmenuZavershen!=0) ?>
我只是用 '.' 分割字符串并通过格式化再次加入它。如果您希望将其四舍五入到零小数点,只需调用 formatter(yourvariable,0)以上是关于Javascript 分离和裁剪以及四舍五入的主要内容,如果未能解决你的问题,请参考以下文章