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

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт нСсколько встроСнных ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои особСнности повСдСния с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами ΠΈ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ€Π°ΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… Π² рСгистрах накоплСния ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ Π½Π°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ сумм. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ рассмотрим ΡˆΡ‚Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, матСматичСскиС Ρ‚Ρ€ΡŽΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚ΠΈΠΏΠΎΠΌ Число Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π°.

ИспользованиС встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π»

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

НапримСр, Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.9, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ 5. Однако, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ -5.9, функция Π²Π΅Ρ€Π½Π΅Ρ‚ -6, Π° Π½Π΅ -5. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простого отбрасывания Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ часто Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ, зависящСй ΠΎΡ‚ Π·Π½Π°ΠΊΠ° числа, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эту ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π¦Π΅Π».

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ѐункция Π¦Π΅Π»() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с числами любой точности, Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (порядка 10^18 ΠΈ Π²Ρ‹ΡˆΠ΅) ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ потСря точности ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния чисСл Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π·Π½Π°ΠΊΠ° (ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΊ Π½ΡƒΠ»ΡŽ), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π¦Π΅Π»() округляСт "Π²Π½ΠΈΠ·" ΠΏΠΎ матСматичСскому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ вычислСния остатка

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

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

Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅Π§ΠΈΡΠ»ΠΎ = 123.456;

Π¦Π΅Π»Π°ΡΠ§Π°ΡΡ‚ΡŒ = Π¦Π΅Π»(Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅Π§ΠΈΡΠ»ΠΎ);

Π”Ρ€ΠΎΠ±Π½Π°ΡΠ§Π°ΡΡ‚ΡŒ = Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅Π§ΠΈΡΠ»ΠΎ - Π¦Π΅Π»Π°ΡΠ§Π°ΡΡ‚ΡŒ;

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡ‚ΡŒΡΡ Π»ΠΎΠ³ΠΈΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π»(). Если для -123.456 цСлая Ρ‡Π°ΡΡ‚ΡŒ станСт -124, Ρ‚ΠΎ дробная Ρ‡Π°ΡΡ‚ΡŒ вычислится ΠΊΠ°ΠΊ -123.456 - (-124) = 0.544. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄Ρ€ΠΎΠ±ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ трСбования бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊ Π·Π½Π°ΠΊΡƒ остатка.

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° матСматичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числами

Π’Π΅ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ заслуТиваСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь кроСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ логичСских ошибок Π² ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… систСмах. Π’ бухгалтСрском ΡƒΡ‡Π΅Ρ‚Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΡ‚ΠΎΡ€Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ суммы, ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ°Π·ΠΈΡ‚ΡŒ финансовый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ПовСдСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π»() матСматичСски ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ·), Π½ΠΎ Π½Π΅ всСгда соотвСтствуСт ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ оТиданию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Если бизнСс-Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ гласит, Ρ‡Ρ‚ΠΎ дробная Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π·Π½Π°ΠΊ исходного числа (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ -5.5 дробная Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ -0.5), стандартная Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π¦Π΅Π»() Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠžΠΊΡ€() с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ округлСния ΠΊ Π½ΡƒΠ»ΡŽ, Ссли такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдусмотрСна Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· сторонниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π·Π½Π°ΠΊΠ° числа ΠΏΠ΅Ρ€Π΅Π΄ вычислСниСм. Если число ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ скоррСктирован Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ цСлая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ΡΠ΅ΠΊΠ°Π»Π°ΡΡŒ Π² сторону нуля. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написания Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ соотвСтствиС оТиданиям ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с финансовыми ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° симмСтрия ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ число Ѐункция Π¦Π΅Π»() Π”Ρ€ΠΎΠ±ΡŒ (Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚) ОТидаСмая Π΄Ρ€ΠΎΠ±ΡŒ (Π‘ сохранСниСм Π·Π½Π°ΠΊΠ°)
10.7 10 0.7 0.7
-10.7 -11 0.3 -0.7
5.0 5 0.0 0.0
-5.0 -5 0.0 0.0

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ пСрСносС ΠΊΠΎΠ΄Π° ΠΈΠ· старых вСрсий 1Π‘ (7.7) Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ 8.x ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ. ВсСгда тСстируйтС Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… значСниях.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π¦Π΅Π»(-10.7) Ρ€Π°Π²Π½ΠΎ -11?

Π’ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ функция "цСлая Ρ‡Π°ΡΡ‚ΡŒ" (floor) всСгда округляСт Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ -11 мСньшС, Ρ‡Π΅ΠΌ -10.7, Π° -10 большС, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ матСматичСским ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ являСтся -11.

Ѐункция ΠžΠΊΡ€ΡƒΠ³Π» ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ округлСния

Ѐункция ΠžΠΊΡ€() Π² 1Π‘ являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π΅ просто ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π½ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ процСссом округлСния с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Π₯отя Π΅Ρ‘ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства Π·Π½Π°ΠΊΠΎΠ² послС запятой, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована ΠΈ для выдСлСния Ρ†Π΅Π»ΠΎΠΉ части ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ точности. Однако Ρ€Π΅ΠΆΠΈΠΌΡ‹ округлСния ΠΈΠ³Ρ€Π°ΡŽΡ‚ здСсь Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ.

БущСствуСт нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² округлСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅.ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°ΡΠ‘Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ, ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅.ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°ΡΠ‘Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° влияСт Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ значСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 0.5). Для Π·Π°Π΄Π°Ρ‡ΠΈ отдСлСния Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΡƒΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ, Π½ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСоднозначности.

ИспользованиС ΠžΠΊΡ€() цСлСсообразно Π² ситуациях, ΠΊΠΎΠ³Π΄Π° трСбуСтся Π½Π΅ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π° привСсти число ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ стандарту точности ΠΏΠ΅Ρ€Π΅Π΄ дальнСйшими вычислСниями. НапримСр, ΠΏΡ€ΠΈ расчСтС Π½Π°Π»ΠΎΠ³ΠΎΠ² часто трСбуСтся ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ΡŒ сумму Π΄ΠΎ ΠΊΠΎΠΏΠ΅Π΅ΠΊ ΠΏΠΎ спСцифичСским ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ школьного округлСния. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях комбинация ΠžΠΊΡ€() ΠΈ вычитания Π΄Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Ѐункция Π¦Π΅Π»()
ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
Ѐункция ΠžΠΊΡ€()
Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ манипуляции

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ

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

Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌΠΈ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠžΠΊΡ€() с явным ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ количСства Π·Π½Π°ΠΊΠΎΠ² послС запятой ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части. Π­Ρ‚ΠΎ дСйствиС "ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚" число ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Π΅ΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΡˆΠΈΡ… Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… расчСтах. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого шага ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΏΡ€ΠΈ сравнСнии Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… частСй Π½Π° равСнство Π½ΡƒΠ»ΡŽ.

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‡Π΅Ρ€Π΅Π· строковоС прСдставлСниС

Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° стандартныС матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ подходят ΠΈΠ·-Π·Π° спСцифики Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚Π° с числами Π² строковом Π²ΠΈΠ΄Π΅, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΌΠΈ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ±Π΅Π³Π°ΡŽΡ‚ ΠΊ строковым манипуляциям. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ числа Π² строку, поискС раздСлитСля Ρ†Π΅Π»ΠΎΠΉ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части (запятой ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ) ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ подстроки.

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ считаСтся ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с матСматичСскими опСрациями. Он сильно зависит ΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… настроСк ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°, Π»ΠΈΠ±ΠΎ запятая Π² качСствС дСсятичного раздСлитСля. ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ парсингС нСструктурированных тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΄Π΅ число Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊ Ρ‚ΠΈΠΏΡƒ Число.

Если Π²Ρ‹ всС ΠΆΠ΅ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строковый ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ примСняйтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π‘Ρ‚Ρ€Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ() для ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Число() для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСобразования ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части Π² числовой Ρ‚ΠΈΠΏ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок Ρ‚ΠΈΠΏΠ° "Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ числа" ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… арифмСтичСских дСйствий с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ критичСски зависят ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΠΈ систСмы. На сСрвСрС с английской локалью Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠ°, Π° Π½Π° русском ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ β€” запятая, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

πŸ’‘

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

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Рассмотрим Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий ΠΈΠ· ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: расчСт количСства ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ ΠΈ остатка Ρ‚ΠΎΠ²Π°Ρ€Π° Π½Π° складС. Допустим, Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅ 12 ΡˆΡ‚ΡƒΠΊ, Π° Π½Π° складС числится 125.5 Π΅Π΄ΠΈΠ½ΠΈΡ† (Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΈΠ·-Π·Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ взвСшивания). Нам Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ количСство ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ остаток ΡˆΡ‚ΡƒΠΊ.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ ΠΎΠ±Ρ‰Π΅Π΅ количСство Π½Π° Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, получая Π΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ число ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ. Π—Π°Ρ‚Π΅ΠΌ выдСляСм Ρ†Π΅Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ β€” это количСство ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ. Дробная Ρ‡Π°ΡΡ‚ΡŒ умноТаСтся Π½Π° Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остаток Π² ΡˆΡ‚ΡƒΠΊΠ°Ρ…. Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ сумма ΠΏΠΎΠ»Π½Ρ‹Ρ… ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ ΠΈ остатка всСгда Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° исходному количСству.

Ѐункция Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ(ΠžΠ±Ρ‰Π΅Π΅ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ, Π’ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ)

ΠŸΠΎΠ»Π½Ρ‹Π΅ΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ = Π¦Π΅Π»(ΠžΠ±Ρ‰Π΅Π΅ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ / Π’ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ);

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ”Ρ€ΠΎΠ±Π½Ρ‹ΠΉ = (ΠžΠ±Ρ‰Π΅Π΅ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ / Π’ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ) - ΠŸΠΎΠ»Π½Ρ‹Π΅ΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ;

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ’Π¨Ρ‚ΡƒΠΊΠ°Ρ… = ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ”Ρ€ΠΎΠ±Π½Ρ‹ΠΉ * Π’ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ;

// ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ округлСния

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ’Π¨Ρ‚ΡƒΠΊΠ°Ρ… = ΠžΠΊΡ€(ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ’Π¨Ρ‚ΡƒΠΊΠ°Ρ…, 2, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.Π‘Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅Π΅);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("ΠŸΠΎΠ»Π½Ρ‹Π΅ΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ, ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ", ΠŸΠΎΠ»Π½Ρ‹Π΅ΠšΠΎΡ€ΠΎΠ±ΠΊΠΈ, ΠžΡΡ‚Π°Ρ‚ΠΎΠΊΠ’Π¨Ρ‚ΡƒΠΊΠ°Ρ…);

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

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт комплСксный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: использованиС дСлСния, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π», вычитания для получСния Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ округлСния для устранСния ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Π΅ΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ являСтся устойчивым ΠΊ ошибкам ΠΈ Π»Π΅Π³ΠΊΠΎ читаСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ % (остаток ΠΎΡ‚ дСлСния) для этой Π·Π°Π΄Π°Ρ‡ΠΈ?

Π’ языкС 1Π‘ Π½Π΅Ρ‚ прямого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° % для чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π² C# ΠΈΠ»ΠΈ Java. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ остатка ΠΎΡ‚ дСлСния Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСимущСствСнно с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Для Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… чисСл Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ описанный Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ вычитания Ρ†Π΅Π»ΠΎΠΉ части, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄Π°Π΅Ρ‚ прСдсказуСмый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ нСзависимо ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ матСматичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±Π΅Π· использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π»?

ВСорСтичСски ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠžΠΊΡ€(Число, 0, Π Π΅ΠΆΠΈΠΌΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΡ.ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°ΡΠ‘Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ), Ρ‡Ρ‚ΠΎ ΠΏΠΎ сути являСтся Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Π¦Π΅Π»(). Π›ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строковоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ это Π½Π΅ рСкомСндуСтся ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ зависимости ΠΎΡ‚ Π»ΠΎΠΊΠ°Π»ΠΈ. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ всС Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ получСния Ρ†Π΅Π»ΠΎΠΉ части ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ способом.

ВлияСт Π»ΠΈ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ числа Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ выдСлСния Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части?

Π”Π°, влияСт. Если Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° установлСна Π΄Π»ΠΈΠ½Π° Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2 Π·Π½Π°ΠΊΠ°, Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ числом с 5 Π·Π½Π°ΠΊΠ°ΠΌΠΈ, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ записи Π² Π±Π°Π·Ρƒ. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΎ 15 Π·Π½Π°ΠΊΠΎΠ² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, Π½ΠΎ ΠΏΡ€ΠΈ сохранСнии Π² рСгистры ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ усСчСниС согласно настройкам ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли дробная Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ числС?

Вакая ситуация Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π¦Π΅Π»() для ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. Если Π²Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρƒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ Π»ΠΈ пСрСмСнная, ΠΈΠ»ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ Π»ΠΈ нСявного прСобразования Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π·Π½Π°ΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ исходноС число Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π° Π½Π΅ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния с ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ, Π΄Π°ΡŽΡ‰Π΅ΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π½Π°ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, -0.0000001).

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Π° Π² скорости ΠΌΠ΅ΠΆΠ΄Ρƒ Π¦Π΅Π»() ΠΈ матСматичСским Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ?

Π Π°Π·Π½ΠΈΡ†Π° Π² скорости выполнСния этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ½ΠΎ ΠΌΠ°Π»Π° ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния для Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΡƒΡ‡Π΅Ρ‚Π°. Ѐункция Π¦Π΅Π»() являСтся Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈ высокооптимизированной. ОсновноС врСмя выполнСния тратится Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π° Π½Π΅ Π½Π° саму ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ дСлСния ΠΈΠ»ΠΈ вычитания. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слСдуСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ, Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ арифмСтичСскиС дСйствия.