Czy określenie typu zmiennoprzecinkowego jest wystarczające, aby zagwarantować takie same wyniki?

Piszę specyfikację opisującą pewną arytmetykę, która zostanie wykonana przez oprogramowanie. Chodzi o to, że mogę przekazać tę specyfikację dwóm różnym programistom (którzy używają potencjalnie różnych języków i / lub architektur), a kiedy dodam jakiś wkład do ich programów, obojezawsze wypluć ten sam rezultat.

Na przykład, jeśli specyfikacja mówi „dodaj 0,5 do wyniku”, może to stanowić problem. W zależności od metody przechowywania zmiennoprzecinkowego 0,5 może być reprezentowane jako 0,4999999135 lub 0,500000138 itd.

Jaki jest najlepszy sposób na określenie reguł tutaj, aby wszystko było spójne na wszystkich poziomach? Czy mogę powiedzieć „Wszystkie liczby muszą być reprezentowane wIEEE 754 64-bitowy format?? Czy może lepiej powiedzieć coś w stylu „Wszystkie liczby muszą być najpierw skalowane o 1000 i obliczone za pomocą arytmetycznego punktu stałego”?

Jest to trochę inne od większości pytań zmiennoprzecinkowych, na które natrafiłem, ponieważ problem polega na powtarzalności na różnych platformach, a nie na ogólnej precyzji.

questionAnswers(1)

yourAnswerToTheQuestion