javascript编号精度而不转换为String
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript编号精度而不转换为String,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1216字,纯文字阅读大概需要2分钟。
内容图文
![javascript编号精度而不转换为String](/upload/InfoBanner/zyjiaocheng/706/9886d022f3b440dcb2a4f12dd3948477.jpg)
我正在开发REST API并返回JSON.其中一个字段叫做submissionPercent,我需要它是一个数字,但正好有2个小数位
>如果submissionPercent是20,我需要返回20.00.
>如果submissionPercent是20.238,我需要返回20.24.
但submissionPercent应该是一个不是String的数字.
如果我使用toFixed或toPrecision,那么我得到的是一个String.
如果可能,我该如何实现?
解决方法:
var n = 20.238;
Math.round(n * 100) / 100
// => 20.24
或者更一般地说:
function roundWithPrecision(num, precision) {
var multiplier = Math.pow(10, precision);
return Math.round( num * multiplier ) / multiplier;
}
roundWithPrecision(20.238, 2)
// => 20.24
roundWithPrecision(20.238, 1)
// => 20.2
正如其他人指出的那样,20和20.00是完全相同的,所以如果你想让用户看到小数点后的两位数,即使它们是零,你也必须使用像toFixed这样的字符串格式化函数.
对于JSON API,由消费者决定如何在解码时存储该值.即使您输出的JSON表示{val:20.00},消费者也会以其选择的宽度存储它.它最终可能是32位浮点数或64位浮点数.它可能最终成为一个字符串.它可能最终位于VARCHAR(6)列中的MySQL数据库中.您无法控制消费者如何处理您的数据,这是设计使然.
输出{val:20.00}而不是{val:20}或{val:20.00000}或{val:2000e-2}是没有优势的.如果您希望API使用者假定两位精度,则应将该信息放在API文档中.我鼓励这样做,因为这将有助于其他开发人员在实现API客户端时做出决策.
内容总结
以上是互联网集市为您收集整理的javascript编号精度而不转换为String全部内容,希望文章能够帮你解决javascript编号精度而不转换为String所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。