W Javie i C# operacja ta widnieje pod nazwą IEEEremainder na obiektach Match: https://docs.microsoft.com/en-us/dotnet/api/system.math.ieeeremainder?view=netcore-3.1
W Remarks jest napisane, że IEEERemainder nie jest tym samym, co operator modulo. I to dodaje kolejną wątpliwość, jak obliczać.
Ale w przykładach jest wypisane porównanie wyniku IEEERemainder z operatorem modulo. I tam widać, że wynikiem jest reszta z dzielenia przez całą liczbę zmiennoprzecinkową. Dla C#.
Sprawdziłem w Javascript i wynik jest taki sam (pomijając przybliżenie reprezentacji ułamka).
Natomiast w programie bc
(linuksowym) jeśli ustawi się scale
na jakąś wartość większą od 0, to okazuje się, że dzieli dalej aż do tej dokładności i wynikiem jest np.
scale=10
17.8 % 4.1
.00000000014
To powyższe wydaje się chyba błędnym zastosowaniem algorytmu modulo.