I am at a bit of a loss explain how this variation is possible.
До тех пор, пока не будет единого языка архитектуры / ОС / языка программирования CPU, чтобы "управлять ими всеми", подобные проблемы будут происходить. Если хотите, вы можете попытаться найти какой-нибудь способ получить числа, чтобы связать 100% с миллионным десятичным знаком, но я думаю, что это пустая трата времени и, вероятно, не будет длиться долго.
Any ideas?
Выберите точность и провалите разницу, только если ваше число не соответствует этой точности. Нет необходимости рассчитывать числа с точностью до 10 знаков после запятой, если вы заботитесь (или можете измерить) только до 2-го числа.
Например, у вас есть это ...
Expected: ((B,D),(C,A)); : 0.05766153477579324
Found: ((B,D),(C,A)); : 0.05766153477579325
^
|
|
If this was a 9...would it change the behavior
of whoever is using your calculation?
Другими словами ...
Double expected = 0.05......
Double actual = Double.parseDouble(valueFromFile);
// Instead of doing this....
if(!expected.equals(actual)) {
// fail test..
}
// Do this (only substitute .0001 with whatever you think an acceptable number is
// based off of the precision possible of the measurement of your input)....
if(Math.Abs(expected - actual) > .0001) {
// fail test...
}