js 中将 string 转化为 double,避免产生多位数和计算精度损失。

本贴最后更新于 2740 天前,其中的信息可能已经东海扬尘

js 中将 string 转化为 double,避免产生多位数和计算精度损失。

、当小数点后面的个数相同时:

num1=1.23

num2=24.21

计算得:

num1+num2=1.2324.21 -----这结果表明是,字符串直接拼接

num11+num21=25.44 ----结果可见,num1*1 是直接将它转变成我们想要的结果了

2、当小数点后面的个数不同时:(注意当我们的 string 后面有空格,每一个空格都视为一位小数)

num1=12.1;

num2=0.21;

计算得:

num11+num21=12.219999999999999 这种情况我们就不能怎么做了

改为:

(num1100+num2100)/100=12.22

3、当我们无法判读小数点的位数时(注意:带入的参数 num1 和 num2 最好是去掉尾部的空)

加法运算**
**

[javascript] view plain copy

  1. function numAdd(num1, num2) {
  2. var baseNum, baseNum1, baseNum2;
  3. try {
  4. baseNum1 = num1.toString().split(".")[1].length;
  5. } catch (e) {
  6. baseNum1 = 0;
  7. }
  8. try {
  9. baseNum2 = num2.toString().split(".")[1].length;
  10. } catch (e) {
  11. baseNum2 = 0;
  12. }
  13. baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
  14. var precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;//精度
  15. return ((num1 * baseNum + num2 * baseNum) / baseNum).toFixed(precision);;
  16. };

减法运算

[javascript] view plain copy

  1. function numSub(num1, num2) {
  2. var baseNum, baseNum1, baseNum2;
  3. try {
  4. baseNum1 = num1.toString().split(".")[1].length;
  5. } catch (e) {
  6. baseNum1 = 0;
  7. }
  8. try {
  9. baseNum2 = num2.toString().split(".")[1].length;
  10. } catch (e) {
  11. baseNum2 = 0;
  12. }
  13. baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
  14. var precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
  15. return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
  16. };
  17. // 乘法运算
  18. "code" class="javascript">function numMulti(num1, num2) {
  19. var baseNum = 0;
  20. try {
  21. baseNum += num1.toString().split(".")[1].length;
  22. } catch (e) {
  23. }
  24. try {
  25. baseNum += num2.toString().split(".")[1].length;
  26. } catch (e) {
  27. }
  28. return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
  29. };
  30. // 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
  31. function numDiv(num1, num2) {
  32. var baseNum1 = 0, baseNum2 = 0;
  33. var baseNum3, baseNum4;
  34. try {
  35. baseNum1 = num1.toString().split(".")[1].length;
  36. } catch (e) {
  37. baseNum1 = 0;
  38. }
  39. try {
  40. baseNum2 = num2.toString().split(".")[1].length;
  41. } catch (e) {
  42. baseNum2 = 0;
  43. }
  44. with (Math) {
  45. baseNum3 = Number(num1.toString().replace(".", ""));
  46. baseNum4 = Number(num2.toString().replace(".", ""));
  47. return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
  48. }
  49. };
  50. 转载自:http://w3capp.cn/download/details?id=63&focus=5&type=2
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1283 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 996
    13 引用 • 200 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 313 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    955 引用 • 944 回帖
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 615 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 3 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 5 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 31 回帖
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 2 关注
  • Excel
    31 引用 • 28 回帖 • 1 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 52 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖 • 1 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 376 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 661 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 408 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 8 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10138 引用 • 46070 回帖 • 64 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8217 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 642 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    374 引用 • 1858 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1062 引用 • 3455 回帖 • 151 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 280 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    118 引用 • 54 回帖 • 6 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖