First, the exact algorithm (zimmerman) is documented in this support article:
scroll to the bottom for the formula.
Second, you can poll the weather service directly to see the source data used in calculation. For example:
will show you the result with the rawData attached. The problem is that if openweathermap (OWM) data is far from correct, it will result in the watering percentage pretty far off. As I explained in this post (https://opensprinkler.com/forums/topic/current-state-of-the-weather-script/) due to the limitations of OWM we have to use a 24-hour rolling window of the forecast data, not history data, which is different from previously when we had WUnderground service.
On the other hand, if there is a particular pattern in the way the data is different from true data (for example, temperature is always 10 degrees below what it should be) you can adjust the weather parameter baseline (in weather options) to counteract that (e.g. by lowering the temperature baseline from 70 to 60 or something like that).