Search the Community

Showing results for tags 'Борьба с багами'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • RAGE Multiplayer
    • Announcements
    • Discussion
    • Suggestions
    • RDR2 Multiplayer
  • Scripting
    • Scripting
    • Resources
  • Community
    • Support
    • Servers
    • Media Gallery
  • Non-English
    • Русский - Russian
    • Français - French
    • Deutsch - German
    • Espanol - Spanish
    • Română - Romanian
    • Portuguesa - Portuguese
    • Polski - Polish

Categories

  • Scripts
  • Gamemodes
  • Libraries
  • Plugins
  • Maps
  • Tools

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Facebook


Youtube


Skype


Web


VK

Found 1 result

  1. Сегодня затрону важную проблему, о которой не знают многие новички. Это не секретная информация и про это написано достаточно много, но новички так стремятся "в бой", что пропускают кучу важной информации. А потом удивляются, почему программа работает не так, как они хотят. Итак, сегодня рассмотрим две проблемы. A): Подумайте что выведет это код? (не проверяйте через компьютер только) console.log(6.6+3.3); console.log(0.1+0.2); console.log(0.3-0.1); 9.9; 0.3; 0.2? Неправильно! Ответы: 9.899999999999999 0.30000000000000004 0.19999999999999998 Логично, что и (6.6+3.3) === 9.9 будет false Почему так? Прочитайте про IEEE 754 и всё поймёте. Хотите знать как с этим бороться? Хорошо, дам 2 метода. 1): Не используйте операции с десятичными дробями. Храните исключительно целые числа и делайте их дробными прямо перед использованием. 2): Используйте toFixed. Значение 10 решает 99% проблем с дробями (у вас, конечное, будет только 10 знаков после запятой). Значение 5 решает 99.9999% всех проблем с дробями. Короче, чем ближе значение к 0, тем меньше проблем будет у вас с дробями (и тем меньше будет знаков после запятой). console.log(+(6.6+3.3.toFixed(5))); B):Подумайте, что выведет этот код(не проверяйте через компьютер только) console.log(9999999999999999); console.log(279999999999999448); Ответы: 10000000000000000 279999999999999460 Как с этим бороться? Очень просто! Не используйте слишком большие числа. Используйте числа от −2147483648 до 2147483647 и проблем не будет 100% (можно и немного большие/меньшие числа использовать, но и этого диапозона всем хватает обычно). Меня бесят всякие ошибки в вычислениях в JS (их явно больше, чем 2 описанные), что мне делать? Если точные вычисления вам важны, то в JS храните все числа в String типе, а вычисления проводите с помощью плагинов (нормальными статически типизированными языками; Есть куча специальных языков для вычислений). Вот так вот, за все удобства JS приходится платить точностью, но как только появляется точность, то тут же улетучивается всё удобство!