JS:想做購物車叶眉?先學好加址儒、減、乘衅疙、除的計算莲趣!

我的代碼有多短,本文章就有多短饱溢!(?_?)

※ 思路分析

對于整數(shù)的運算喧伞,不會出錯;而帶了小數(shù)點的運算绩郎,直接計算容易出錯潘鲫。推薦的做法是,帶了小數(shù)點的計算肋杖,都要經(jīng)過處理溉仑。
因此,對于帶小數(shù)的加状植、減浊竟、乘、除運算津畸,先變?yōu)檎麛?shù)的運算振定,再將得到的結(jié)果變回去(由中間值處理),得到最終的結(jié)果肉拓。

一后频、加法運算

1. 先看直接計算:
console.log(0.1 + 0.2);
// 打印結(jié)果 0.30000000000000004
2. 代碼實現(xiàn)
function calcPlus(num1, num2) {
  let l1, l2, m;
  try {
    l1 = num1.toString().split(".")[1].length;
  } catch(e) {
    l1 = 0;
  }
  try {
    l2 = num2.toString().split(".")[1].length;
  } catch(e) {
    l2 = 0;
  }
  m = Math.pow(10, Math.max(l1, l2));
  return (num1 * m + num2 * m) / m;
}

console.log(0.1 + 0.2, calcPlus(0.1, 0.2));
// 輸出: 0.30000000000000004 0.3

代碼解析:
m:得到小數(shù)點的位數(shù)的最大值,并10的次方得到中間值帝簇;
m=10徘郭,因此計算式為:(0.1 * 10 + 0.2 * 10) / 10 = (1 + 2) / 10 = 3 / 10 = 0.3

二靠益、減法運算

1. 先看直接計算:
console.log(1.0 - 0.9);
// 輸出: 0.09999999999999998
2. 代碼實現(xiàn)
function calcSubtract(num1, num2) {
  let l1, l2, m;
  try {
    l1 = num1.toString().split(".")[1].length;
  } catch(e) {
    l1 = 0;
  }
  try {
    l2 = num2.toString().split(".")[1].length;
  } catch(e) {
    l2 = 0;
  }
  m = Math.pow(10, Math.max(l1, l2));
  return (num1 * m - num2 * m) / m;
}
 
console.log(1.0 - 0.9, calcSubtract(1.0, 0.9));
// 輸出: 0.09999999999999998 0.1

代碼解析:
m:得到小數(shù)點的位數(shù)的最大值,并10的次方得到中間值残揉;
m==10胧后,因此計算式為:(1.0 * 10 - 0.9 * 10) / 10 = (10 - 9) / 10 = 1 / 10 = 0.1

三、乘法運算

1. 先看直接計算:
console.log(19.9 * 100);
// 輸出:1989.999999999999
2. 代碼實現(xiàn)
function calcMultiply(num1, num2) {
  let m = 0;
  try {
    m += num1.toString().split(".")[1].length;
  } catch(e) {}
  try {
    m += num2.toString().split(".")[1].length;
  } catch(e) {}
  return (Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", ""))) / Math.pow(10, m);
}
 
console.log(19.9 * 100, calcMultiply(19.9, 100));
// 輸出:1989.9999999999998 1990

代碼解析:
m:得到小數(shù)點的最大的位數(shù)抱环;
因此計算式為:(199 * 100) / = 19900 / 10 = 1990

四壳快、除法運算

1. 先看直接計算:
console.log(6.6 / 0.2);
// 輸出:32.99999999999999
2. 代碼實現(xiàn)
function calcDivide(num1, num2) {
  let l1 = 0, l2 = 0, n1, n2;
  try {
    l1 = num1.toString().split(".")[1].length;
  } catch(e) {}
  try {
    l2 = num2.toString().split(".")[1].length;
  } catch(e) {}
  n1 = Number(num1.toString().replace(".", ""));
  n2 = Number(num2.toString().replace(".", ""));
  return (n1 / n2) * Math.pow(10, l2 - l1);
}
 
console.log(6.6 / 0.2, calcDivide(6.6, 0.2));
// 輸出:32.99999999999999 33

代碼解析:
n1,n2:去除小數(shù)點,即變?yōu)檎麛?shù)
l2-l1:位數(shù)差镇草,即中間值
因此計算式為:(66 / 2) * = 33 * 1 = 33

下載附件(CSDN)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眶痰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子梯啤,更是在濱河造成了極大的恐慌竖伯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件因宇,死亡現(xiàn)場離奇詭異七婴,居然都是意外死亡,警方通過查閱死者的電腦和手機察滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門打厘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贺辰,你說我怎么就攤上這事户盯。” “怎么了饲化?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵莽鸭,是天一觀的道長。 經(jīng)常有香客問我滓侍,道長蒋川,這世上最難降的妖魔是什么牲芋? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任撩笆,我火速辦了婚禮,結(jié)果婚禮上缸浦,老公的妹妹穿的比我還像新娘夕冲。我一直安慰自己,他們只是感情好裂逐,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布歹鱼。 她就那樣靜靜地躺著,像睡著了一般卜高。 火紅的嫁衣襯著肌膚如雪弥姻。 梳的紋絲不亂的頭發(fā)上南片,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音庭敦,去河邊找鬼疼进。 笑死,一個胖子當著我的面吹牛秧廉,可吹牛的內(nèi)容都是我干的伞广。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼疼电,長吁一口氣:“原來是場噩夢啊……” “哼嚼锄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔽豺,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤区丑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后修陡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刊苍,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年濒析,在試婚紗的時候發(fā)現(xiàn)自己被綠了正什。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡号杏,死狀恐怖婴氮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盾致,我是刑警寧澤主经,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站庭惜,受9級特大地震影響罩驻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜护赊,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一惠遏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骏啰,春花似錦节吮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春帚豪,著一層夾襖步出監(jiān)牢的瞬間碳竟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工狸臣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞭亮,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓固棚,卻偏偏與公主長得像统翩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子此洲,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359