float sayilarda nokta yada virgul

Başlatan bunalmis, 22 Ocak 2010, 09:39:48

z

Yazdigim bazi programlar farkli makinalarda calistirildiginda hata aliyordum.

Bunun float degiskenlere deger atarken bazi makinelerde nokta yerine . bazi makinelerin ise , kabul etmesinden kaynaklandigini farkettim.

a, real degisken ise

Program icinde a=1.5 yazdigimda bunun nokta yerine virgul olmasi gereken makinede sorun cikartmamasi icin ne gibi onlem almaliyim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Salih

Program derlenirken mecburen delphi formatında yazılacak. Asıl problem sayı değerleri edit gibi bileşenlerden girilirken veya data dosyası  gibi harici belgelerden değer okurken oluşur. Bu durumda o anki windowsun ondalık ayarac karakteri dikkate alınarak çevirme yapılacak.

birumher

DecimalSeparator değişkenini kullanarak istediğin gibi ayarlayabilirsin.

Örnegin

var
 oldseparator: char;
begin
 oldSeparator := DecimalSeparator;

 DecimalSeparator := '.';

 {burada işlemler windowsun ayarı ne olursa olsun nokta ile yapılır}

 DecimalSeparator := oldSeparator; //eski haline getirdik
Birkan.Herguner

z

Ne kadar pratikmiş.

Bende çözüm için ne taklalar attım anlatamam.

3/2 yi hesaplatıp sonucu string olarak bir değişkene atıyor sonra soldan 2.  karakterin noktamı virgülmü olduğunu öğreniyor daha sonra da programı bu okuduğum karaktere göre davrandırıyordum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com