Почему fmt.Println (float64 (1/2)) показывает 0? - PullRequest
0 голосов
/ 07 февраля 2019
package main

import (
    "fmt"
)

func main() {
    fmt.Println(float64(1/2))
}

Почему печатается: 0

Ссылка на игровую площадку: https://play.golang.org/p/KGgao6n8lTA

Это потому, что точность fmt.Println низкая?

1 Ответ

0 голосов
/ 07 февраля 2019

Порядок операций здесь: 1/2 = 0 (целочисленное деление усекает десятичные разряды), затем следует float64(0) = 0, затем fmt.Println(0).

Короче говоря: целочисленное деление усекается до 0. Всеостальное работает нормально.

Как прокомментировал @Amadan, вы можете форсировать деление с плавающей запятой, приведя одно из целых чисел, то есть float64(1) / 2 = 0.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...