Skip to content

Instantly share code, notes, and snippets.

@mcihad
Created July 10, 2023 12:41
Show Gist options
  • Save mcihad/0552d62e267253527a72391263fb6568 to your computer and use it in GitHub Desktop.
Save mcihad/0552d62e267253527a72391263fb6568 to your computer and use it in GitHub Desktop.
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