Представьте себе следующую ситуацию. Суммы добавляются в общей сложности в цикле:Добавление поплавков не дает правильного результата
float total = 0;
float[] amounts = new float[]{...};
foreach(float amount in amounts)
{
total += amount;
}
total
, как вэй, как и все amount
с записываются в базу данных. Когда я вычисляю SUM(amount)
в SQL, это приводит к значению, которое отличается от total
. Кроме того, когда я сделать то же расчет в C#, но на этот раз при добавлении суммы к значению типа двойного,
double total = 0;
//the rest of the code is the same as above
затем total
представляет правильное значение.
Это может быть вызвано разницей в точности между поплавком и двойным?
Обратите внимание, что это зависит от значений. Большинство результатов этого расчета являются правильными.
Переменная типа float имеет только 7 цифр точности, где переменная типа double имеет 15 цифр точности. –
Покажите нам поплавки, и тогда мы сможем помочь ...? –
@newStackExchangeInstance: значения являются случайными (а не как «случайным образом сгенерированы», но они могут быть любыми) – bvgheluwe