Sobes.tech
Middle+

NUMERIC istifadə etmədən uçan nöqtə problemini necə qarşısını almaq olar? INT tipi ilə alternativ yanaşma nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Nöqtəli ədədlərlə bağlı problem, float və ya double tiplərində ondalıq hissəsi olan ədədlərin təmsilində məhdud dəqiqlik səbəbindən yaranır. Yuvarlama səhvlərindən qaçınmaq üçün NUMERIC tipindən istifadə etmədən (bu, dəqiq sabit nöqtə hesablaması təmin edir), tez-tez tam ədəd tipləri (INT) ilə yanaşma tətbiq olunur.

Fikirlər, dəyərləri ən kiçik vahidlərdə saxlamaqdır, məsələn, 12.34 yerinə 1234 (100-ə vuraraq). Beləliklə, bütün əməliyyatlar tam ədədlərlə həyata keçirilir və float-ə xas yuvarlama səhvləri aradan qaldırılır.

Go dilində nümunə:

package main
import "fmt"

func main() {
    // Pulun qrammda saxlanması (tam ədəd)
    var priceCents int = 1234 // 12,34 rubl

    // 0,66 rubl əlavə edirik (66 qramm)
    priceCents += 66

    fmt.Printf("Qiymət: %d.%02d rubl\n", priceCents/100, priceCents%100)
}

Bu yanaşma maliyyə tətbiqlərində geniş istifadə olunur, çünki dəqiqlik və yuvarlama səhvlərinin olmaması vacibdir.