Я намагаюся виконати просте ділення в Go.
fmt.Println(3/10)
При цьому друкується 0 замість 0,3. Це якось дивно. Не могли б хтось поділитися, в чому причина цього? я хочу виконувати різні арифметичні дії в Go.
Дякую
Я намагаюся виконати просте ділення в Go.
fmt.Println(3/10)
При цьому друкується 0 замість 0,3. Це якось дивно. Не могли б хтось поділитися, в чому причина цього? я хочу виконувати різні арифметичні дії в Go.
Дякую
Відповіді:
Вираз 3 / 10
є нетипізованим постійним виразом. Специфікація говорить це про константні вирази
якщо операнди двійкової операції є різними типами нетипізованих констант, операція, а для небулевих операцій результат використовує вид, який з'являється далі в цьому списку: ціле число, руна, плаваюча крапка, комплекс.
Оскільки 3
і 10
є нетипізованими цілими константами, значення виразу є нетипізованим цілим числом ( 0
у даному випадку).
Один з операндів повинен бути константою з плаваючою точкою для результату до константи з плаваючою точкою. Наступні вирази обчислюють нетипізовану константу з плаваючою точкою 0.3
:
3.0 / 10.0
3.0 / 10
3 / 10.0
Також можна використовувати набрані константи. Наступні вирази оцінюють як float64
константу 0.3
:
float64(3) / float64(10)
float64(3) / 10
3 / float64(10)
Друк будь-якого з наведених вище виразів надрукує 0.3
. Наприклад, fmt.Println(3.0 / 10)
відбитки 0.3
.
fmt.Println(float64(3) / float64(10))
дає 0.3
.