Ð§Ð¾Ð¼Ñ 6.35.toFixed(1) == 6.3?
ÐгÑдно з докÑменÑаÑÑÑÑ Math.round Ñ toFixed, окÑÑглÑÑÑÑ Ð´Ð¾ найближÑого ÑиÑла: 0..4 ведÑÑÑ Ð²Ð½Ð¸Ð·, а5..9 ведÑÑÑ Ð²Ð³Ð¾ÑÑ.
ÐапÑиклад:
alert( 1.35.toFixed(1) ); // 1.4
У подÑÐ±Ð½Ð¾Ð¼Ñ Ð¿ÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð½Ð¸Ð¶Ñе, ÑÐ¾Ð¼Ñ 6.35 окÑÑглÑÑÑÑÑÑ Ð´Ð¾ 6.3, а не 6.4?
alert( 6.35.toFixed(1) ); // 6.3
Як пÑавилÑно окÑÑглиÑи 6.35?
ÐеÑÑÑковий дÑÑб 6.35 ÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ Ð½ÐµÑкÑнÑенний двÑйковий код. Як завжди в ÑакиÑ
випадкаÑ
, вÑн збеÑÑгаÑÑÑÑÑ Ð· вÑÑаÑÐ¾Ñ ÑоÑноÑÑÑ.
ÐодивимоÑÑ:
alert( 6.35.toFixed(20) ); // 6.34999999999999964473
ÐÑÑаÑа ÑоÑноÑÑÑ Ð¼Ð¾Ð¶Ðµ ÑпÑиÑиниÑи Ñк збÑлÑÑеннÑ, Ñак Ñ Ð·Ð¼ÐµÐ½ÑÐµÐ½Ð½Ñ ÑиÑла. У ÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð½ÐºÑеÑÐ½Ð¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ ÑиÑло ÑÑÐ°Ñ ÑÑÐ¾Ñ Ð¸ менÑим, ÑÐ¾Ð¼Ñ Ð²Ð¾Ð½Ð¾ окÑÑглÑÑÑÑÑÑ Ð²Ð½Ð¸Ð·.
Ð Ñо Ð´Ð»Ñ 1.35?
alert( 1.35.toFixed(20) ); // 1.35000000000000008882
ТÑÑ Ð²ÑÑаÑа ÑоÑноÑÑÑ Ð·Ñобила ÑиÑло ÑÑÐ¾Ñ Ð¸ бÑлÑÑим, ÑÐ¾Ð¼Ñ Ð²Ð¾Ð½Ð¾ окÑÑглÑÑÑÑÑÑ Ð²Ð²ÐµÑÑ .
Як ми можемо випÑавиÑи пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð· ÑиÑлом 6.35, ÑкÑо Ñ
оÑемо, Ñоб воно бÑло пÑавилÑно окÑÑглене?
Ðи Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ Ð½Ð°Ð±Ð»Ð¸Ð·Ð¸Ñи його до ÑÑлого ÑиÑла до окÑÑгленнÑ:
alert( (6.35 * 10).toFixed(20) ); // 63.50000000000000000000
ÐаÑважÑе, Ñо 63.5 Ð²Ð·Ð°Ð³Ð°Ð»Ñ Ð½Ðµ Ð¼Ð°Ñ Ð²ÑÑÐ°Ñ Ð½Ð° ÑоÑнÑÑÑÑ. Це ÑомÑ, Ñо деÑÑÑкова ÑаÑÑина 0.5 наÑпÑÐ°Ð²Ð´Ñ Ñ 1/2. ÐÑоби, ÑоздÑÐ»ÐµÐ½Ñ Ð½Ð° 2, ÑоÑно пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ñ Ð´Ð²ÑйковÑй ÑиÑÑемÑ, Ñ Ð¼Ð¸ можемо ÑÑ Ð¾ÐºÑÑглиÑи:
alert( Math.round(6.35 * 10) / 10 ); // 6.35 -> 63.5 -> 64(окÑÑглене) -> 6.4