Π Π°Π±ΠΎΡ‚Π° с числами Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ часто Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ β€” особСнно ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ финансовых расчСтах, скидках ΠΈΠ»ΠΈ количСствС Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ². ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ floor-ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ прСвысит исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, ΠΏΡ€ΠΈ расчСтС количСства ΠΏΠΎΠ»Π½Ρ‹Ρ… ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΎΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ суммы скидки Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ покупатСля.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ округлСния Ρ‡Π΅Ρ€Π΅Π· встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 1Π‘, Π½ΠΎ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ для спСцифичСских случаСв. ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½ΡŽΠ°Π½ΡΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами, особСнности округлСния Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ практичСским ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих конфигурациях.

Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для округлСния чисСл Π²Π½ΠΈΠ· β€” нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ с 1Π‘:Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠ΅ΠΉ, 1Π‘:Π£Π’ ΠΈΠ»ΠΈ 1Π‘:Π—Π£ΠŸ β€” эта инструкция ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. А для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² 1Π‘, ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ объясним Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числовыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 1Π‘ для округлСния Π²Π½ΠΈΠ·

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 прСдоставляСт нСсколько способов ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ число Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ инструмСнты β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠžΠΊΡ€() ΠΈ Π¦Π΅Π»(), Π½ΠΎ ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ отличаСтся Π² зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Ѐункция ΠžΠΊΡ€(Число, Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ) позволяСт явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ округлСния Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ. Для округлСния Π²Π½ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ· (ΠΈΠ»ΠΈ Π΅Π³ΠΎ числовой эквивалСнт 2). НапримСр:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠžΠΊΡ€(5.7, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·); // Π’Π΅Ρ€Π½Π΅Ρ‚ 5

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” функция Π¦Π΅Π»(Число), которая всСгда округляСт Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ Π² сторону нуля. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ·, Π° для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… β€” ΠΊΠ°ΠΊ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Π²Π΅Ρ€Ρ…:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚1 = Π¦Π΅Π»(5.7);  // Π’Π΅Ρ€Π½Π΅Ρ‚ 5

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚2 = Π¦Π΅Π»(-5.7); // Π’Π΅Ρ€Π½Π΅Ρ‚ -5 (Π° Π½Π΅ -6!)

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π¦Π΅Π»() Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ точности. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π΄ΠΎ дСсятых ΠΈΠ»ΠΈ сотых Π²Π½ΠΈΠ·, придСтся ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ с ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ/Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠžΠΊΡ€().

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹ΠΌΠΈ суммами (Ρ‚ΠΈΠΏ Число(15,2)) часто ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· модуля Π Π°Π±ΠΎΡ‚Π°Π‘Π”Π΅Π½ΡŒΠ³Π°ΠΌΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ всСгда Π΄Π°ΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ Π²Π½ΠΈΠ·. НапримСр, функция ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ”Π΅Π½Π΅ΠΆΠ½ΠΎΠ΅() ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ банковскоС ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅, Π° Π½Π΅ floor.

  • πŸ“Œ ΠžΠΊΡ€() с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ β€” ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для любой точности ΠΈ Π·Π½Π°ΠΊΠ° числа.
  • πŸ”’ Π¦Π΅Π»() β€” быстрый, Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ†Π΅Π»Ρ‹Ρ… ΠΈ "ΠΊ Π½ΡƒΠ»ΡŽ").
  • πŸ’° Π Π°Π±ΠΎΡ‚Π°Π‘Π”Π΅Π½ΡŒΠ³Π°ΠΌΠΈ β€” Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки для округлСния Π²Π½ΠΈΠ·.
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ округлСния Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠžΠΊΡ€() с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ
Π¦Π΅Π»()
Π Π°Π±ΠΎΡ‚Π°Π‘Π”Π΅Π½ΡŒΠ³Π°ΠΌΠΈ
Π‘ΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл: ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ

Один ΠΈΠ· самых распространСнных источников ошибок β€” ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠžΠΊΡ€(-5.7, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·) Π²Π΅Ρ€Π½Π΅Ρ‚ -6, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ -6 Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π²Π΅Ρ€Ρ…! ΠŸΡ€ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ Π²Π½ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число становится "ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ":

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠžΠΊΡ€(-5.7, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·); // Π’Π΅Ρ€Π½Π΅Ρ‚ -6 (ошибка!)

// На самом Π΄Π΅Π»Π΅ Π²Π΅Ρ€Π½Π΅Ρ‚ -5, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ -5 "мСньшС" -5.7 ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Π½ΠΎ "большС" Π½Π° числовой оси.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π² сторону ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π΅Π³ΠΎ значСния (Ρ‚.Π΅. ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ), Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π²Π΅Ρ€Ρ… для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл ΠΈ ΠžΠΊΡ€Π’Π½ΠΈΠ· β€” для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. Или Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ:

Ѐункция ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ’Π½ΠΈΠ·(Число, Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ = 0)

Π—Π½Π°ΠΊ = ?(Число >= 0, 1, -1);

ΠœΠ°ΡΡˆΡ‚Π°Π± = 10 ^ Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π—Π½Π°ΠΊ Π¦Π΅Π»(Абс(Число) ΠœΠ°ΡΡˆΡ‚Π°Π±) / ΠœΠ°ΡΡˆΡ‚Π°Π±;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π­Ρ‚Π° функция ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ числа, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ’Π½ΠΈΠ·(5.7)  // 5

ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ’Π½ΠΈΠ·(-5.7) // -6

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π°Π»ΡŽΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ количСствами Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² всСгда тСстируйтС ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… значСниях. Ошибка Π² расчСтах ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ искаТСнию остатков ΠΈΠ»ΠΈ финансовых Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π¦Π΅Π»() Π²Π΅Π΄Π΅Ρ‚ сСбя Π½Π΅Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами?

Ѐункция Π¦Π΅Π»() Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ матСматичСскоС ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π½ΡƒΠ»ΡŽ (truncate), Π° Π½Π΅ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ числу. Для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл "ΠΊ Π½ΡƒΠ»ΡŽ" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ значСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -5.7 становится -5), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ пониманию "округлСния Π²Π½ΠΈΠ·".

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ количСства Π·Π½Π°ΠΊΠΎΠ² послС запятой

Когда трСбуСтся ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ число Π½Π΅ Π΄ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ, Π° Π΄ΠΎ дСсятых, сотых ΠΈ Ρ‚.Π΄., ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠžΠΊΡ€() становится критичСски Π²Π°ΠΆΠ½Ρ‹ΠΌ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ 12.3456 Π΄ΠΎ сотых Π²Π½ΠΈΠ·, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠžΠΊΡ€(12.3456, 2, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·); // Π’Π΅Ρ€Π½Π΅Ρ‚ 12.34

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ число Π½Π° 10^n, ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ число Π²Π½ΠΈΠ· Π±Π΅Π· использования Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² округлСния:

Число = 12.3456;

Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ = 2;

ΠœΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ = 10 ^ Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π¦Π΅Π»(Число * ΠœΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ) / ΠœΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ; // 12.34

Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ особСнности округлСния Π² тСхничСском Π·Π°Π΄Π°Π½ΠΈΠΈ.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ число Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠžΠΊΡ€(.., ΠžΠΊΡ€Π’Π½ΠΈΠ·) Π¦Π΅Π»(число * 10^n)/10^n
12.3456 2 12.34 12.34
-12.3456 2 -12.34 -12.34
12.9999 2 12.99 12.99
0.0001 3 0 0
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ массив чисСл Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ точности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠœΠ°ΡΡΠΈΠ²ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ’Π½ΠΈΠ·() ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ 1Π‘ (доступна Π² послСдних вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 8.3.20+).

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· Π² запросах 1Π‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с запросами Π² 1Π‘ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ чисСл осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ОКР(), Π½ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π΅ΠΆΠΈΠΌΠ° округлСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запроса Π²Π½ΠΈΠ·, придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. НапримСр:

ВЫБРАВЬ

ОКР(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° / 100, 0) * 100 КАК Π‘ΡƒΠΌΠΌΠ°ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Π°ΡΠ’Π½ΠΈΠ·

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК РСализация

Π­Ρ‚ΠΎΡ‚ запрос ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ сумму Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎ сотСн Π² ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ сторону. Однако для Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ округлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ ΠΊΠΎΠΏΠ΅Π΅ΠΊ) Π»ΡƒΡ‡ΡˆΠ΅ пСрСнСсти Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΊΠΎΠ΄ Π½Π° встроСнном языкС:

Запрос = Новый Запрос;

Запрос.ВСкст =

"ВЫБРАВЬ

| Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° КАК Π‘ΡƒΠΌΠΌΠ°

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК РСализация";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ° = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

Π‘ΡƒΠΌΠΌΠ°ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Π°Ρ = ΠžΠΊΡ€(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°, 2, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·);

// Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно Π² запросС Π±Π΅Π· постобработки, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ арифмСтичСскиС Ρ‚Ρ€ΡŽΠΊΠΈ. НапримСр, для округлСния Π΄ΠΎ Ρ†Π΅Π»Ρ‹Ρ… Π²Π½ΠΈΠ·:

ВЫБРАВЬ

?(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° >= 0, Π¦Π•Π›(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°), Π¦Π•Π›(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) - ?(Π¦Π•Π›(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) = Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, 0, 1)) КАК Π‘ΡƒΠΌΠΌΠ°ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Π°Ρ

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК РСализация

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ арифмСтичСскиС выраТСния Π² запросах ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ округлСния|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π·Π½Π°ΠΊ чисСл (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅/ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅)|ВСстируйтС ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи (0, значСния Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ округлСния)|Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ расчСтом-->

Π’ΠΈΠΏΠΎΠ²Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки ΠΏΡ€ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ чисСл. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ΠΈΠ· Π½ΠΈΡ…:

  • πŸ”΄ Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° числа β€” использованиС ΠžΠΊΡ€Π’Π½ΠΈΠ· для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅, это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.
  • πŸ”΄ НСучСт точности Ρ‚ΠΈΠΏΠ° β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Число(10,5)) Π΄ΠΎ большСго количСства Π·Π½Π°ΠΊΠΎΠ², Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ.
  • πŸ”΄ ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π¦Π΅Π»() ΠΈ ΠžΠΊΡ€() β€” функция Π¦Π΅Π»() Π½Π΅ являСтся ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡŽ Π²Π½ΠΈΠ· для всСх случаСв.
  • πŸ”΄ ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² запросах Π±Π΅Π· тСстирования β€” слоТныС выраТСния Π² SQL-синтаксисС 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, всСгда тСстируйтС ΠΊΠΎΠ΄ Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях:

  • πŸ§ͺ НулСвыС значСния (0, -0).
  • πŸ§ͺ Числа, Ρ€Π°Π²Π½Ρ‹Π΅ Π³Ρ€Π°Π½ΠΈΡ†Π΅ округлСния (1.000, 1.999).
  • πŸ§ͺ ΠžΡ‡Π΅Π½ΡŒ большиС ΠΈ ΠΎΡ‡Π΅Π½ΡŒ малСнькиС числа (1e10, 1e-10).
  • πŸ§ͺ ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа с Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ, Ρ€Π°Π²Π½ΠΎΠΉ 0.999.. (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -1.999 ΠΏΡ€ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ Π΄ΠΎ Ρ†Π΅Π»Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π°Ρ‚ΡŒ -2, Π½ΠΎ Π¦Π΅Π»() Π²Π΅Ρ€Π½Π΅Ρ‚ -1).

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ() с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Число = -1.999;

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅: " + Число);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π¦Π΅Π»(): " + Π¦Π΅Π»(Число)); // -1 (ошибка!)

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠžΠΊΡ€Π’Π½ΠΈΠ·: " + ΠžΠΊΡ€(Число, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·)); // -1 (Ρ‚ΠΎΠΆΠ΅ ошибка!)

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: " + (?Число < 0, Π¦Π΅Π»(Число) - 1, Π¦Π΅Π»(Число)))); // -2

πŸ’‘

ВсСгда провСряйтС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ округлСния Π½Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… числах ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… значСниях. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ!

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ массовом ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ тысячи ΠΈΠ»ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ чисСл (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…), стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ 1Π‘ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСдостаточно быстро. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

1. ИспользованиС Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (для Ρ†Π΅Π»Ρ‹Ρ… чисСл):

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НапримСр, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ сотСн Π²Π½ΠΈΠ·:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = (Число \ 100) * 100; // \ β€” цСлочислСнноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅

2. ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² запросах:

Если ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, пСрСнСситС Π»ΠΎΠ³ΠΈΠΊΡƒ Π² запрос. НапримСр:

ВЫБРАВЬ

(Π¦Π΅Π½Π° ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ) - ΠœΠžΠ”(Π¦Π΅Π½Π° ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, 1) КАК Π‘ΡƒΠΌΠΌΠ°ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Π°ΡΠ’Π½ΠΈΠ·

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг.Π’ΠΎΠ²Π°Ρ€Ρ‹ КАК Π’ΠΎΠ²Π°Ρ€Ρ‹

3. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²:

Если ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ числа ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, сохраняйтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² БоотвСтствиС ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

4. ИспользованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚:

Для критичСских ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Native-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡ‚ΡŒ
ΠžΠΊΡ€(.., ΠžΠΊΡ€Π’Π½ΠΈΠ·) БрСдняя Высокая Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ
Π¦Π΅Π»() + Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° Высокая БрСдняя (ошибки с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ) ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ случаи
Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠžΡ‡Π΅Π½ΡŒ высокая Волько для Ρ†Π΅Π»Ρ‹Ρ… Массовая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ†Π΅Π»Ρ‹Ρ… чисСл
Запросы с ΠœΠžΠ”() Зависит ΠΎΡ‚ Π‘Π£Π‘Π” Высокая ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°Ρ…

Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ Π² 1Π‘ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π½Π΅ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°. Однако Π² высоконагруТСнных систСмах (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ расчСтС Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ для 50 000 сотрудников) оптимизация округлСния ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΉ прирост скорости.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях

Рассмотрим, ΠΊΠ°ΠΊ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· примСняСтся Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ 1Π‘.

1. РасчСт количСства ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΎΠΊ Ρ‚ΠΎΠ²Π°Ρ€Π°:

ΠŸΡ€ΠΈ фасовкС Ρ‚ΠΎΠ²Π°Ρ€Π° Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΏΠΎ 10 ΡˆΡ‚ΡƒΠΊ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сколько ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ количСства:

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ’ΠΎΠ²Π°Ρ€Π° = 127;

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ’Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ = 10;

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ£ΠΏΠ°ΠΊΠΎΠ²ΠΎΠΊ = ΠžΠΊΡ€(ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ’ΠΎΠ²Π°Ρ€Π° / ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ’Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·);

// Π’Π΅Ρ€Π½Π΅Ρ‚ 12 (Π° Π½Π΅ 13!)

2. ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ скидок Π² сторону покупатСля:

Π’ 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ сумму скидки Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»Π° Ρ€Π°ΡΡ‡Π΅Ρ‚Π½ΡƒΡŽ:

Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° = 1000.99;

ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚Π‘ΠΊΠΈΠ΄ΠΊΠΈ = 15.5;

Π‘ΡƒΠΌΠΌΠ°Π‘ΠΊΠΈΠ΄ΠΊΠΈ = ΠžΠΊΡ€(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° * ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚Π‘ΠΊΠΈΠ΄ΠΊΠΈ / 100, 2, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·);

3. РасчСт Π½Π°Π»ΠΎΠ³ΠΎΠ² с ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΠΈΠ·:

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… странах Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡ‚ΡŒ Π½Π°Π»ΠΎΠ³ΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π½Π°Π»ΠΎΠ³ΠΎΠΏΠ»Π°Ρ‚Π΅Π»ΡŒΡ‰ΠΈΠΊΠ°. Π’ 1Π‘:Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

БуммаБСзНалога = 1000.00;

БтавкаНалога = 18; // %

БуммаНалога = ΠžΠΊΡ€(БуммаБСзНалога * БтавкаНалога / 100, 2, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·);

4. ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² систСмах ΡƒΡ‡Π΅Ρ‚Π° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

Π’ 1Π‘:Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсоналом ΠΈΠ½ΠΎΠ³Π΄Π° трСбуСтся ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ часы Π²Π½ΠΈΠ· Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ 15 ΠΌΠΈΠ½ΡƒΡ‚):

ΠžΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎΠ§Π°ΡΠΎΠ² = 8.25; // 8 часов 15 ΠΌΠΈΠ½ΡƒΡ‚

Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ = 0.25; // 15 ΠΌΠΈΠ½ΡƒΡ‚

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅Π’Ρ€Π΅ΠΌΡ = ΠžΠΊΡ€(ΠžΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎΠ§Π°ΡΠΎΠ² / Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·) * Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π»ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ;

// Π’Π΅Ρ€Π½Π΅Ρ‚ 8.0 (Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ†Π΅Π»Ρ‹Ρ… часов)

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ собствСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ округлСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² модулях расчСта Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π½Π°Π»ΠΎΠ³ΠΎΠ²). ΠŸΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΠΈ округлСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π»ΠΈ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.
Как ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ врСмя Π² 1Π‘ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ сСкунд?

Для округлСния значСния Ρ‚ΠΈΠΏΠ° ДатаВрСмя Π΄ΠΎ ΠΌΠΈΠ½ΡƒΡ‚/часов Π²Π½ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΠ°Ρ‡Π°Π»ΠΎΠœΠΈΠ½ΡƒΡ‚Ρ‹(), НачалоЧаса() ΠΈΠ»ΠΈ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с количСством сСкунд. НапримСр:

ВрСмя = ВСкущаяДата();

ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅Π’Ρ€Π΅ΠΌΡ = ΠΠ°Ρ‡Π°Π»ΠΎΠœΠΈΠ½ΡƒΡ‚Ρ‹(ВрСмя) - (Минuta(ВрСмя) ΠœΠžΠ” 15) * 60;

Π­Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ врСмя Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… 15 ΠΌΠΈΠ½ΡƒΡ‚ Π²Π½ΠΈΠ· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 10:23 станСт 10:15).

FAQ: ЧастыС вопросы ΠΏΠΎ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡŽ Π²Π½ΠΈΠ· Π² 1Π‘

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠžΠΊΡ€(-5.7, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ -5, Π° Π½Π΅ -6?

Ѐункция ΠžΠΊΡ€() с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ ΠžΠΊΡ€Π’Π½ΠΈΠ· округляСт число ΠΊ "ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ" Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π° числовой оси. Для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ Π½ΡƒΠ»ΡŽ (Ρ‚.Π΅. -5.7 становится -5). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ -6, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠžΠΊΡ€(-5.7, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π²Π΅Ρ€Ρ…) ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°ΠΊ числа.

Как ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ число Π΄ΠΎ блиТайшСго мСньшСго ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ числу (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎ 50)?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ:

Ѐункция ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ”ΠΎΠšΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎΠ’Π½ΠΈΠ·(Число, ΠšΡ€Π°Ρ‚Π½ΠΎΠ΅)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠšΡ€Π°Ρ‚Π½ΠΎΠ΅ * Π¦Π΅Π»(Число / ΠšΡ€Π°Ρ‚Π½ΠΎΠ΅);

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

// ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠžΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒΠ”ΠΎΠšΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎΠ’Π½ΠΈΠ·(127, 50); // Π’Π΅Ρ€Π½Π΅Ρ‚ 100

Для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл функция Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

МоТно Π»ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² запросС 1Π‘ Π²Π½ΠΈΠ·?

Π”Π°, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, для округлСния суммы Π΄ΠΎ Ρ€ΡƒΠ±Π»Π΅ΠΉ Π²Π½ΠΈΠ·:

ВЫБРАВЬ

БУММА(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) - ΠœΠžΠ”(БУММА(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°), 1) КАК Π‘ΡƒΠΌΠΌΠ°ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½Π°Ρ

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК РСализация

Для округлСния Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… разрядов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅/Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Как ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ всС числа Π² динамичСском спискС?

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ вычисляСмоС ΠΏΠΎΠ»Π΅ Π² запрос динамичСского списка:

Запрос.ВСкст =

"ВЫБРАВЬ

| Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚1,

| Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚2,

| ΠžΠΊΡ€(ЧисловоСПолС, 2, &Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ) КАК ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅ΠŸΠΎΠ»Π΅

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠœΠΎΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ КАК ΠœΠΎΠΉΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ", Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΠΊΡ€Π’Π½ΠΈΠ·);

Или ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ послС получСния Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠΈ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… сумм Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠΎΠΏΠ΅Π΅Ρ‡Π½Ρ‹Π΅ расхоТдСния?

Π­Ρ‚ΠΎ связано с особСнностями хранСния чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Π΅ΠΉ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ Число(15,2) для Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Ρ… сумм.
  2. ΠžΠΊΡ€ΡƒΠ³Π»ΡΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… вычислСний, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ сумму.
  3. Для критичСских расчСтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π»ΠΎΠ³ΠΎΠ²) примСняйтС спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· модуля Π Π°Π±ΠΎΡ‚Π°Π‘Π”Π΅Π½ΡŒΠ³Π°ΠΌΠΈ.