В настоящее время я работаю в маленькой программе, которая вычисляет формулу для некоторых введенных чисел. Дело в том, что мне нужен ответ с некоторыми десятичными значениями, но я не смог найти способ напечатать свой ответ в виде двойного или другого подобного Тип переменной с информацией в Интернете, он либо выдает ошибку, либо печатает только целую часть ответа.

func main() {

var m = 0
a := make([]int, 5)


   for i := 0; i < 5; i++ {
      fmt.Scan(&a[i])
    }

  m = a[0]*60 + a[2] + (a[4]/60)
  fmt.Println(m)

    }

Заранее спасибо за любую подсказку или помощь.

go
0
mraz 2 Май 2019 в 05:21

4 ответа

Лучший ответ

Целочисленное деление обрезает результат до нуля. Используйте результат с плавающей запятой. Например, с минимальной потерей точности,

package main

import "fmt"

func main() {
    var m float64
    a := make([]int64, 5)
    for i := 0; i < 5; i++ {
        _, err := fmt.Scan(&a[i])
        if err != nil {
            fmt.Println(err)
            i--
        }
    }
    fmt.Println(a)
    m = float64((a[0]*60+a[2])*60+a[4]) / 60
    fmt.Println(m)
}

Выход:

2 3 4 5 6
[2 3 4 5 6]
124.1
1
peterSO 2 Май 2019 в 05:32

Используйте float64 и конвертируйте все ваши целые в float перед вычислениями.

Следующее даст вам десятичные значения.

m = float64(a[0])*60 + float64(a[2]) + (float64(a[4])/60)

Но это даст целое.

m = float64(a[0]*60 + a[2] + (a[4]/60))
0
svetha.cvl 2 Май 2019 в 04:24

Вы захотите использовать float64, а не int, если вы хотите использовать десятичные разряды с числами. Просто будьте осторожны, используя их с валютой.

1
peterSO 2 Май 2019 в 09:43

Используйте функцию fmt.Printf ссылка C - функция printf

import fmt
value := 2.2
fmt.Printf("%f", value)
0
Seil Choi 2 Май 2019 в 02:35