Закръгляне в js

Тия дни ми се наложи да обработвам цени в javascript. Та си написах една малка функцийка, която закръгля float числа. Крайната цел е числото да стане във формат xxxxx.xx.
И тъй като съм прибран човек, исках да я направя като част от Math обекта, но се изненадах когато Math.prototype върна undefined. Т.е. Math не е конструктор, хм…

Малко ровене и ето решението (просто изпускаме prototype):

  Math.roundAsMoney = function(v) {
    var r = (parseInt (v * 100) / 100) + ""; // закръгляме до два знака след запетаята
    if (r.indexOf(".") < 0) // ако няма нищо след запетаята
      return r + ".00"; // добавяме ".00"
    else
      // ако след запетаята е само една цифра - добавяме една нула накрая, иначе връщаме r
      return r.split(".")[1].length < 2 ? r + "0" : r;
  }

Не съм много убеден доколко тоя split на края е оптимален, но върши работа.

А самото извикване става като останалите Math функции. Примерно Math.roundAsMoney (1220.23123) – връща 1220.23.

Дано това е полезно на някой.

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

  • Categories

  • Recent Comments

    • Tuzemec: Уф… това беше преди 2 години 🙂 Даже повече. Тогава нямаше обмитявания и митници. След това май...
      2033 days 9 hours
    • Dimitar: Здравей! Имаше ли накакви проблеми с доставката? Трябваше ли да ходиш до митница да ги обезмитяваш?...
      2035 days 20 hours
    • nname: много ревърб си пуснал, може леко да се “опразни” микса за да изпъкнат и ударните инструменти...
      2157 days 16 hours
    • ivan: интернет експлорер 6 не трябва да се маха! защо всички искате да я махнат на мен ми харесва и аз искам да не я...
      2167 days 14 hours
    • nname: продай го за каса уиски на Астрал за поредния им албум 🙂
      2397 days 15 hours
  • RSS Links