Created
July 10, 2023 12:41
-
-
Save mcihad/0552d62e267253527a72391263fb6568 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"math" | |
"strings" | |
) | |
var birlerList = [...]string{"", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz"} | |
var onlarList = [...]string{"", "On", "Yirmi", "Otuz", "Kırk", "Elli", "Altmış", "Yetmiş", "Seksen", "Doksan"} | |
var basamaklarList = [...]string{"", "Bin", "Milyon", "Milyar", "Trilyon", "Katrilyon", "Kentilyon", "Seksilyon", "Septilyon", "Oktillyon", "Nonylyon", "Desilyon"} | |
func Number2Text(sayi int) string { | |
if sayi == 0 { | |
return "Sıfır" | |
} | |
if sayi < 0 { | |
return "Eksi " + Number2Text(-sayi) | |
} | |
sonucStr := "" | |
basamakStr := "" | |
for i, basamak := 0, 0; sayi > 0; i, sayi = i+1, sayi/1000 { | |
yuzler, onlar, birler := sayi%1000/100, sayi%100/10, sayi%10 | |
if yuzler > 0 { | |
if yuzler == 1 { | |
basamakStr = "Yüz" | |
} else { | |
basamakStr = birlerList[yuzler] + "Yüz" | |
} | |
} | |
if onlar > 0 { | |
basamakStr += onlarList[onlar] | |
} | |
if birler > 0 { | |
if !(yuzler == 0 && onlar == 0 && birler == 1 && basamak == 1) { | |
basamakStr += birlerList[birler] | |
} | |
} | |
sonucStr = basamakStr + "" + basamaklarList[basamak] + "" + sonucStr | |
basamakStr = "" | |
//fmt.Printf("basamak:%d, yuzler: %d, onlar: %d, birler: %d\n", basamak, yuzler, onlar, birler) | |
basamak++ | |
} | |
return strings.TrimSpace(sonucStr) | |
} | |
func roundFloat(val float64, precision uint) float64 { | |
ratio := math.Pow(10, float64(precision)) | |
return math.Round(val*ratio) / ratio | |
} | |
func Currency2Text(sayi float64, precision uint) string { | |
sayi = roundFloat(sayi, precision) | |
sayiInt := int(sayi) | |
sayiStr := Number2Text(sayiInt) | |
if precision == 0 { | |
return sayiStr + " TL" | |
} | |
sayiStr += " TL" | |
sayiStr += " " + Number2Text(int(roundFloat(sayi-float64(sayiInt), precision)*100)) + " Krş" | |
return sayiStr | |
} | |
func main() { | |
var num float64 = 1 | |
for num > 0 { | |
fmt.Print("Sayı giriniz: ") | |
fmt.Scanln(&num) | |
fmt.Println(Currency2Text(num, 2)) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment