Noktadan sonra sabit uzunlukta olmayan değerler için,
Örneğin
12345.0
12345.000
123.1
123445.12345
Gibi sayılarda noktadan sonraki rakamları kaybetmeden nasıl strine çeviririm?
string ifadeye dönüştürme işlemini şu şekilde yapabilirsin örneğin, char string[10]; ve ardından sprintf(string,".5f",float_deger); .5f demek float değerin virgülden sonra 5 basamak al demek.
Sprintf
atama yapmadan önce atanacak değişkenin önüne (float) veya (double) yada (strine) yazımlarını bir deneseniz belki olabiliyordur. parantez içinde hangi tipde atanacağına yarıyor gibi bir şey vardı.
Benim atama yapmada sorunum yok
Benim derdim değişken uzunlukta virgülden sonra 0 a sahip değişkenlerin stringe çevrilirken en fazla 6 haneye kadar olan sıfırlarını muhafaza etmek
Maksimum 6 hane almayı kabul edelim, virgülden sonrası için
Yani:
123.0=>"123.0"
123.000=>"123.000"
123.000000=>"123.000000"
123.000000000000="123.000000"
Ayrıca dili belirtmemişim
C# ile yapmak istiyorum.
C# hiç bilmiyorum.
float olarak denemişsinizdir herhalde değişkeni ilk tanımlarken.
şöyle bir şey deneseniz;
double X = 0.000000; veya float X = 0.000000;
string Y = "a";
.
// X içeriği programda değişir.
.
Y = (double) X;
Y = (float) X;
aklıma birde değişkeni sabit bir altı hane virgüllü bir sayıyla and or gibi işlemlere tabi tutmak gibi birşeyler geliyor ama;
aması sadece geliyor. ötesi çıkmıyor. matematiksel bir şeyle muhakkak yapılır herhalde. matematik uzmanı ilgi alanına girebilir belki konu.
Round-trip format stringi (https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#the-round-trip-r-format-specifier) kullanabilirsiniz. Performans endişeniz varsa, double değerler kullanırken "R" yerine "G17" yazmanız daha hızlı olabilir.
double raw = 0.0123456789;
string str = raw.ToString("G17");
double reparsed = double.Parse(str);
Console.WriteLine($"data:\t\t{raw}");
Console.WriteLine($"string:\t\t{str}");
Console.WriteLine($"after parse:\t{reparsed}");
Çıktı:
data: 0.0123456789
string: 0.0123456789
after parse: 0.0123456789