none
Странная математика в C# RRS feed

  • Вопрос

  • float r1 =225-(-45);
    float r2 =50-(-50);
    float r3 = r1 / r2;
    float r4 =(225-(-45))/(50-(-50));

    в данном случае r3!=r4, почему получаются разные значения


    • Изменено skemuze 8 апреля 2013 г. 11:06
    8 апреля 2013 г. 11:05

Ответы

Все ответы

  • Потому что в первом случае выражение типа float/float = float, а во втором int/int = int. Это стандартное поведение языка.
    • Предложено в качестве ответа Kirill Bessonov 8 апреля 2013 г. 11:38
    • Отменено предложение в качестве ответа skemuze 8 апреля 2013 г. 11:43
    • Помечено в качестве ответа skemuze 8 апреля 2013 г. 11:43
    8 апреля 2013 г. 11:12
    Модератор
  • Все очень просто при расчете р4 вы оперируете целыми числами а потом приводите их к числам с плавующей запятой (270/100)=2,7 но целое число = 2 , когда вы считаете р3 то вы оперируете числа с плавующей точкой, и получаете правильный результат.

    более подробно про приведение можно почитать вот тут приведения


    • Изменено Brash_O 8 апреля 2013 г. 11:17
    • Предложено в качестве ответа Kirill Bessonov 8 апреля 2013 г. 11:38
    8 апреля 2013 г. 11:16