01. Array Statistics
Някой може ли да кажа защо ми дава 60/100. Два Runtime error-a. Моля само Java-ри, на C# минават решенията.
Задача: https://judge.softuni.bg/Contests/Practice/Index/581#0
Решение: https://pastebin.com/u4309jsK
Някой може ли да кажа защо ми дава 60/100. Два Runtime error-a. Моля само Java-ри, на C# минават решенията.
Задача: https://judge.softuni.bg/Contests/Practice/Index/581#0
Решение: https://pastebin.com/u4309jsK
Ето работещо Java решение (може да фейлне за време на някой тест, ако Judge е натоварен).
Както правилно сте се досетили, проблемът е в закръглянето на числата, което се различава при C# и Java.
Тук съм описал по-подробно проблема и съм дал решение - метод, който се грижи за "правилното" обръщане на double към стринг.
Как изполвайки, по-горе описания метод, да получим C# like double, с примера от по-горе?
Вход 0 0 1 и в крайна сметка: double d = 1d / 3d; expected result: 0.33333333333333331
Тук добре е описано, защо завършваме с: ....1:
https://stackoverflow.com/questions/15330988/double-vs-decimal-rounding-in-c-sharp
Благодаря!
1d / 3 (или 1d / 3d) в C# се отпечатва в конзолата като 0.333333333333333 - тест
В Java същата операция се отпечатва в конзолата с един знак повече (16 вместо 15 знака след десетичната запетая): 0.3333333333333333 - тест
doubleToStringCSharpLike метода, който съм дал по-горе, се грижи при такива входни данни (и не само) да получим стринг, който да е идентичен със стринга, който връща C#.
Как да си сложа мишката на променлива в дебъг, оттук нататък? :)
Благодаря!