Сегодня мы поговорим о вещественных числах. Точнее, о представлении их процессором при вычислении дробных величин. Каждый из нас сталкивался с выводом в строку чисел вида 3,4999990123 вместо 3,5 или, того хуже, огромной разницей после вычислений между результатом теоретическим и тем, что получилось в результате выполнения программного кода...
olacaktır, ancak sorun verilen doğrulukta ve yüksek hesaplama maliyetlerinin uygunluğunda, çift kesinlikli sayı herhangi bir biçime dönüştürülebilir: ± işareti · (1+mantis/ 2 52 ) × 2 sıra − 1023
mantis ve sırayı ayırmak zor değil, ancak bu sorunu kafa kafaya çözmek ilginç değil
olacaktır, ancak sorun verilen doğrulukta ve yüksek hesaplama maliyetlerinin uygunluğunda, çift kesinlikli sayı herhangi bir biçime dönüştürülebilir: ± işareti · (1+mantis/ 2 52 ) × 2 sıra − 1023
mantis ve sırayı ayırmak zor değil, ancak bu sorunu kafa kafaya çözmek ilginç değil
Doğruluk verilirse, tüm bu girişimin bir anlamı yoktur. Ben zaten bir örnek verdim, 0.07'nin iki ondalık basamağı var. Ancak, karakter sayısını programlı olarak hesaplamaya çalışırsak, on üç parça elde ederiz ... Ve 0,07 hesaplamalar sonucu elde edilmez, bir değişken aracılığıyla bile manuel olarak girilmez.
Alexandr Sokolov : Her şeyi bildiğimi iddia etmedim, bana hatanın ne olduğunu söylemen veya kendi versiyonunu göstermen daha iyi
Programınızdaki her bir çift değişken için kaç ondalık basamak tanımlandığını bilmek istiyorsunuz. Bu saçmalık. Tüm çift değişkenler aynı temsile sahiptir. Float formatında sunulurlar. Bazen nokta solda, bazen sağda - sayının değerine bağlıdır. Bir milyon ve bir milyonda biri farklı hassasiyetle temsil edilir.
Habré ile ilgili bir makaleye dayanmaktadır: https://habr.com/company/xakep/blog/257897/
gerçekten test etmedim, ama işe yarıyor gibi görünüyor
Habré ile ilgili bir makaleye dayanmaktadır: https://habr.com/company/xakep/blog/257897/
gerçekten test etmedim, ama işe yarıyor gibi görünüyor
0.07 sayısının doğru sonucunu veriyorsa, doğru çalışıyor.
0.07 sayısının doğru sonucunu veriyorsa, doğru çalışıyor.
çalışmıyor ((((
çalışmıyor ((((
Ve hiçbir algoritma çalışmayacak...
Ve hiçbir algoritma çalışmayacak...
olacaktır, ancak sorun verilen doğrulukta ve yüksek hesaplama maliyetlerinin uygunluğunda, çift kesinlikli sayı herhangi bir biçime dönüştürülebilir: ± işareti · (1+mantis/ 2 52 ) × 2 sıra − 1023
mantis ve sırayı ayırmak zor değil, ancak bu sorunu kafa kafaya çözmek ilginç değil
olacaktır, ancak sorun verilen doğrulukta ve yüksek hesaplama maliyetlerinin uygunluğunda, çift kesinlikli sayı herhangi bir biçime dönüştürülebilir: ± işareti · (1+mantis/ 2 52 ) × 2 sıra − 1023
mantis ve sırayı ayırmak zor değil, ancak bu sorunu kafa kafaya çözmek ilginç değil
Doğruluk verilirse, tüm bu girişimin bir anlamı yoktur. Ben zaten bir örnek verdim, 0.07'nin iki ondalık basamağı var. Ancak, karakter sayısını programlı olarak hesaplamaya çalışırsak, on üç parça elde ederiz ... Ve 0,07 hesaplamalar sonucu elde edilmez, bir değişken aracılığıyla bile manuel olarak girilmez.
Başka bir seçenek var:
Kendine gel. Bu, ciddiyetle tartışılmaması gereken bir saçmalıktır.
Yazar, çift değişkenlerin iç yapısını tamamen yanlış anlamıştır.
Ö!
Her şeyi bildiğimi iddia etmedim, bana hatanın ne olduğunu söylemen veya kendi versiyonunu göstermen daha iyi
Programınızdaki her bir çift değişken için kaç ondalık basamak tanımlandığını bilmek istiyorsunuz. Bu saçmalık. Tüm çift değişkenler aynı temsile sahiptir. Float formatında sunulurlar. Bazen nokta solda, bazen sağda - sayının değerine bağlıdır. Bir milyon ve bir milyonda biri farklı hassasiyetle temsil edilir.
Başka bir seçenek var:
hayır, işe yaramayacak, dün tür dönüştürme ile yaptım, işte senaryo, sizin örneğiniz ve benimki:
Sonuçlar:
2018.11.13 01:49:16.131 tst (EURUSD,M30) 1.DoubleToDigits() = 11
2018.11.13 01:49:16.131 tst (EURUSD,M30) 1. Rakam() = 0
2018.11.13 01:49:16.131 tst (EURUSD,M30) 2.DoubleToDigits() = 3
2018.11.13 01:49:16.131 tst (EURUSD,M30) 2. Rakam() = 3
google FP- Printing -PLDI96.pdf yapabilirsiniz , ancak birisinin her şeyi algoritmaya göre yapacağından şüpheliyim