Какой результат получим если разделить int на 0 и float на 0
Разделение числа на 0 — это особый случай в программировании, и поведение зависит от типа чисел. Для целочисленных и чисел с плавающей запятой поведение при делении на 0 различается.
Деление целого числа на 0Если попытаться разделить целое число (`int`, `int32`, `int64` и т.д.) на 0, то Go вызовет паническое состояние (runtime panic). Это происходит потому, что целочисленное деление на 0 является неопределенной операцией.
```go
package main
func main() {
var a int = 10
var b int = 0
result := a / b
fmt.Println(result)
}
```
Этот код приведет к панике с ошибкой вида:
```
panic: runtime error: integer divide by zero
```
Деление числа с плавающей запятой на 0Если разделить число с плавающей запятой (`float32`, `float64`) на 0, то Go не вызовет паники. Вместо этого будут использованы специальные значения IEEE 754: положительная бесконечность, отрицательная бесконечность или NaN (Not a Number), в зависимости от знака числителя.
```go
package main
import (
"fmt"
"math"
)
func main() {
var a float64 = 10.0
var b float64 = 0.0
// Деление положительного числа на 0
positiveInf := a / b
fmt.Println("Positive Infinity:", positiveInf) // Вывод: Positive Infinity: +Inf
// Деление отрицательного числа на 0
negativeInf := -a / b
fmt.Println("Negative Infinity:", negativeInf) // Вывод: Negative Infinity: -Inf
// Деление нуля на ноль
zeroDivZero := b / b
fmt.Println("Zero divided by Zero:", zeroDivZero) // Вывод: Zero divided by Zero: NaN
// Проверка значений
fmt.Println("Is Inf:", math.IsInf(positiveInf, 1)) // true
fmt.Println("Is Inf:", math.IsInf(negativeInf, -1)) // true
fmt.Println("Is NaN:", math.IsNaN(zeroDivZero)) // true
}
```
В этом примере:
- Деление положительного числа на 0 дает положительную бесконечность (`+Inf`).
- Деление отрицательного числа на 0 дает отрицательную бесконечность (`-Inf`).
- Деление нуля на ноль дает `NaN`.
- Деление целого числа на 0 в Go вызывает паническое состояние (runtime panic).
- Деление числа с плавающей запятой на 0 в Go приводит к бесконечности (`+Inf`, `-Inf`) или `NaN` без вызова паники.
May 23, 2024, easyoffer