Float64 с двумя десятичными знаками - PullRequest
0 голосов
/ 13 октября 2019

Я новичок в этом. Я пытаюсь сделать калькулятор, который получает два числа типа float64, но затем я хочу поставить результат с двумя десятичными знаками. Я читал, что это с "%.2f", но это не очень хорошо результат в fmt.Scanf

package main

import "fmt"

const menu string = "Calculator v1.0:\n\t1.a+b\n\t2.a-b\n\t3.a*b\n\t4.a/b\nSelect an option:"

func main() {
    var option int
    var firstNumber float64
    var secondNumber float64

    fmt.Println(menu)
    fmt.Scanf("%d", &option)

    fmt.Println("First number:")
    fmt.Scanf("%.2f", &firstNumber)
    fmt.Println("Second number:")
    fmt.Scanf("%.2f", &secondNumber)

    if option == 1 {
        println(sum(firstNumber, secondNumber))
    } else if option == 2 {
        println(subtract(firstNumber, secondNumber))
    } else if option == 3 {
        println(multiply(firstNumber, secondNumber))
    } else if option == 4 {
        println(divide(firstNumber, secondNumber))
    }

}

func sum(a float64, b float64) float64 {
    return a + b
}
func subtract(a float64, b float64) float64 {
    return a - b
}
func multiply(a float64, b float64) float64 {
    return a * b
}
func divide(a float64, b float64) float64 {
    return a / b
}

1 Ответ

1 голос
/ 13 октября 2019

Если вам просто нужно принять значение с плавающей точкой 64 для ваших входов, вы можете просто использовать %f или %g для установки ваших значений. Точность по умолчанию - 6.

Если вам нужна более высокая точность и обработка ошибок, может быть более надежным использовать ваши входные данные в виде строк, а затем анализировать и обрабатывать их по мере необходимости.

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

package main

import "fmt"

const menu string = "Calculator v1.0:\n\t1.a+b\n\t2.a-b\n\t3.a*b\n\t4.a/b\nSelect an option:"

func main() {
    var option int
    var firstNumber float64
    var secondNumber float64

    fmt.Println(menu)
    fmt.Scanf("%d", &option)

    fmt.Println("First number:")
    fmt.Scanf("%f", &firstNumber)
    fmt.Println("Second number:")
    fmt.Scanf("%g", &secondNumber)

    fmt.Printf("Input Type: %T, FirstNumber: %.2f\n", firstNumber, firstNumber)
    fmt.Printf("Input Type 2: %T, SecondNumber: %f\n", secondNumber, secondNumber)

    if option == 1 {
        println(sum(firstNumber, secondNumber))
    } else if option == 2 {
        println(subtract(firstNumber, secondNumber))
    } else if option == 3 {
        println(multiply(firstNumber, secondNumber))
    } else if option == 4 {
        println(divide(firstNumber, secondNumber))
    }

}

func sum(a float64, b float64) float64 {
    return a + b
}
func subtract(a float64, b float64) float64 {
    return a - b
}
func multiply(a float64, b float64) float64 {
    return a * b
}
func divide(a float64, b float64) float64 {
    return a / b
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...