Re: konudisi - yeni turk lirasi



`man 3 printf`

       "For  some  numeric  conversions  a radix character (âdecimal
pointâ) or thousandsâ grouping  character  is  used.  The  actual 
character  used depends on the LC_NUMERIC part of the locale. The POSIX
locale uses â.â as radix character, and does not have a grouping
character.  Thus,
                   printf("%â.2f", 1234567.89);
       results in â1234567.89â in the POSIX locale,  in  â1234567,89â 
in  the nl_NL locale, and in â1.234.567,89â in the da_DK locale."

Simdi tr_TR locale'i icin demek ki cikti ne imis, "1234567.89". Peki
olmasi gereken ne? Tabi ki "1234567,89". Bu sekilde olmasinin sebebi
peki nedir? LC_NUMERIC'de decimal_point'in <U002D> olmasi yani '.'.
Duzeltmek icin gerekeni de daha onceden soyledim. Umarim yeterli
olmustur 'gerekliligini' anlatmak icin. 

Durumu anlatan kod ekte. Ciktisi da:
$ gcc -o test test.c && ./test 
Secili yore en_US, gosterim: $ 1,543,423.75
Secili yore tr_TR, gosterim: 1543423.75 TL
Secili yore fr_FR, gosterim: 1543423,75 EUR
Secili yore da_DK, gosterim: kr 1.543.423,75


'Gereksiz' cikis yaptigim icin de ozur dilerim. 
 
On Sun, 2004-10-03 at 03:30, NilgÃn Belma BugÃner wrote:
> Cumartesi 2 Ekim 2004 23:46 sularÄnda, YÃksel ÃZCAN ÅunlarÄ yazmÄÅtÄ: 
> > Selamlar,
> >
> > Bir muhasebeci olarak bir kac ekleme yapmak istiyorum;
> > Yeni turk lirasinin Sembolu YTL ve yeni Kuru$un sembolu de YKr'dir.
> > rakamin yaziyla yazildigi fatura basan programlar icin yaziyla() gibi
> > olan bi fonksiyonun kuru$u da goz onune alarak duzenlenmesi gerekir,
> > Diger bir nokta da glibc'deki sorun, acikcasi bir ondalik ayirac(kuru$
> > ayiraci) na sahip oldugumuz icin $ansliyiz :) cunku bir "bin (thousand
> > seperator) ayiraci"miz yok. Sembol olayina gelince, bi kac sene sonra
> 
> Binlik ayracÄmÄz var. Siz parasal gÃsterimi kullanmÄyorsunuz anlaÅÄlan. 
> Parasal gÃsterimi kullanÄrsanÄz binlik ayracÄmÄz olduÄunu gÃrÃrsÃnÃz. 
> Konu ile ilgili adresi dikkatle okursanÄz neyi nasÄl
> kullanmanÄz gerektiÄini ÃÄrenebilirsiniz (tÃrkÃedir):
> http://belgeler.org/glibc/glibc-Locales.html
> Glibc ià hesaplamasÄnda ondalÄk ayraà olarak nokta kullanÄr ve binlik 
> ayraà yoktur. Sadece biÃimli ÃÄktÄ alma aÅamasÄnda yerel gÃsterim 
> o da siz Ãyle isterseniz kullanÄlÄr.
> 
> SayÄsal gÃsterimdeki ondalÄk ayracÄn virgÃl mà nokta mÄ olacaÄÄnÄn
> bir Ãnemi yok. Ãnemli olan parasal gÃsterim ki, onda zaten sorun yok; 
> binlik ayraà nokta, ondalÄk ayraà virgÃldÃr. 
> SayÄsal gÃsterim olarak parasal gÃsterimi seÃmek mÃmkÃn olduÄuna gÃre 
> (zaten baÅka Ãaresi de yok) sayÄsal gÃsterimin farklÄ olmasÄ sadece 
> bir ÃeÅitlilik yaratÄr. 
> 
> AyrÄca glibc'de sayÄsal gÃsterimin nasÄl seÃileceÄi de belli deÄil.
> Yani sayÄsal gÃsterim sadece dosyada var, ÃÄktÄlamanÄn Ãaresi yok!
> Yerel dosyasÄnda, glibc iÅlevleri ile gÃsterimi mÃmkÃn olmayan
> o kadar Ãok tanÄm var ki, bu da onlardan biri.
> Yani, aslÄnda Ãzerinde kopartÄlan fÄrtÄnaya deÄecek birÅey yok ortada.
> 
> > "Yeni Turk Lirasi" tanimindaki "Yeni" ibaresi buyuk ihtimalle
> > kaldirilacak, bakanlar kurulu bu yetkiyi kendine vermi$, fakat bu "yeni"
> 
> BÃyÃk ihtimalle deÄil, 2006'da kalkacak. YTL sadece geÃiÅ aÅamasÄnda
> 1 yÄllÄÄÄna geÃerli. Bu nedenle glibc yerelinde deÄiÅiklik gerekmiyor.
> Zaten para sembolleri uluslarasÄ bir standarda gÃredir (ISO 4217). 
> Glibc yerelinde TRL yerine baÅka bir para birimi gerekiyorsa, Ãnce devletin 
> bu standartta gerekli deÄiÅikliÄi yaptÄrmasÄ lazÄm. Birileri istedi diye 
> glibc yerelindeki tanÄmlar deÄiÅmez.
> 
> BunlarÄ aÃÄklamak ihtiyacÄnÄ duydum ÃÃnkà glibc tr_TR yerelinde bir deÄiÅiklik 
> istenirse onlar da bana soruyor. OnlarÄ kafamdan uydurmadÄm, hemen hepsinin 
> bir standardÄ ya da geÃerli bir nedeni var.
> 
> > ibaresini kaldirma i$inin 2005 icinde olabilecegini sanmiyorum, cunku
> > 2005'te her iki para birimi birlikte kullanilacak, "Yeni" ibaresinin
> > kalkmasi telafisi mumkun olmayan hatta Merkez Bankasini iflas
> > ettirebilecek duzeyde sorunlara sebep olacaktir, sadece YTL'nin tek
> > basina kullanilmaya baslanacagi donem 01.01.2006'dan itibaren
> > baslayacak, bunu da goz onune alirsak, 1 yilligina glibc'de degisiklik
> > yapilmasi oturup ta dusunulmesi gereken bir mesele. Diger bir konu da
> > muhasebe programlarinin uygulamada karsilasacaklari sorunlar;
> > YTL ile ilgili mevzuat $oyle diyor;
> > en du$uk para birimi 0.01 YTL yani 1 YKr dir; durum boyle olunca bir
> > faturanin en du$uk bedeli en az 1 Yeni Kuru$ olacak demek, diger
> > taraftan halen yurt di$ina yapilan ihracatlarda ve yurt di$indan yapilan
> > ithalatlarda $unu oldukca sIk goruyorum;
> 
> Toplamlarda kuruÅ 2 hane olmak zorunda, sadece dÃviz kurlarÄnda
> 4 ya da 5 hane olacak ama alÄÅveriÅlerde ondalÄk ayracÄn saÄÄndaki 
> hane sayÄsÄ yine 2; ÃÃnkà kuruÅtan kÃÃÃk para yok.
> 
> Buradan ÃÄkan sonuà birim fiyatlarda kuruÅ hanesi kalabalÄk olabilir
> ama ana toplamda 2 hane olmak zorunda.
> 
> 
> Esen kalÄn,
> NilgÃn
> 
> _______________________________________________
> GNOME-Turk ePosta listesi
> GNOME-Turk gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-turk
> 
#include <stdio.h>
#include <locale.h>
#include <langinfo.h>
#include <string.h>
int main () {
	float a = 1543423.765;
	int l;
	char *curr;
	char *locales[] = {
		"en_US",
		"tr_TR",
		"fr_FR",
		"da_DK",
		NULL
	};
	for (l=0; locales[l] != NULL; l++) {
		setlocale(LC_ALL,locales[l]);
		curr = strdup(nl_langinfo(CRNCYSTR));
		if (curr[0] == '-') 
			printf("Secili yore %s, gosterim: %s %'.2f\n", locales[l], nl_langinfo(CRNCYSTR)+1, a);
		else
			printf("Secili yore %s, gosterim: %'.2f %s\n", locales[l], a, nl_langinfo(CRNCYSTR)+1);
	}
	return 1;
}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]