> 백엔드 개발 > Golang > Go Float64가 정수를 나타내는지 효율적으로 확인하는 방법은 무엇입니까?

Go Float64가 정수를 나타내는지 효율적으로 확인하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-17 14:37:29
원래의
545명이 탐색했습니다.

How to Efficiently Check if a Go Float64 Represents a Whole Number?

Go에서 정수 부동 소수점 동등성 테스트

Go에서 부동 소수점 숫자로 작업할 때 주어진 float 값은 정수를 나타냅니다. 모듈로 연산자(%)를 사용하려는 시도는 간단한 접근 방식처럼 보일 수 있지만 이 연산자는 float64 값에 대해 정의되지 않았다는 점에 유의하는 것이 중요합니다.

정수 변환 사용

정수 부동 소수점 동등성을 테스트하는 한 가지 접근 방식은 부동 소수점 값을 변환된 정수 값과 비교하는 것입니다. float 값과 변환된 정수 값이 같으면 float는 정수로 간주됩니다. 이는 다음 구문을 사용하여 달성할 수 있습니다.

if a == float64(int64(a)) {
    // a is a whole number
}
로그인 후 복사

math.Trunc 함수 사용

float 값이 int64의 범위를 초과할 수 있는 경우, 또 다른 접근 방식은 math.Trunc 함수를 사용하는 것입니다. 이 함수는 부동 소수점 숫자의 소수 부분을 자르고 정수 값을 반환합니다. 원래 float 값을 잘린 값과 비교하여 float가 정수인지 확인할 수 있습니다.

if a == math.Trunc(a) {
    // a is a whole number
}
로그인 후 복사

다음 Go 코드 float 값이 전체를 나타내는지 정확하게 확인하기 위해 math.Trunc 함수를 사용하는 방법을 보여줍니다. number:

package main

import (
    "fmt"
    "math"
)

func main() {
    var a float64 = 2.00
    if a == math.Trunc(a) {
        fmt.Println("yay")
    } else {
        fmt.Println("you fail")
    }
}
로그인 후 복사

이 예에서는 float 값 2.00이 테스트되고 2.00은 정수이므로 출력은 "yay"입니다.

위 내용은 Go Float64가 정수를 나타내는지 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿