Вот меня торкнуло то...

 

Граждане!

что я делаю не так???


Обычный математический расчёт: А разделить на Б и умножить на 100

сбацал функцию, и он мне понимаш фигушки рисует... даж вот скрипт для прямой проверки написал:

// --- скрипт  ---
int start()
{
Alert(((170/200)*100)," = ",ПрАвт());
//
return(0);
}
//--------------------------------
int ПрАвт()
{
int пао;
пао=(170/200)*100;
return(пао);
}

чую што крышу сносит...

;) а вообще то должно 85 быть как результат

 

Сноси ветку на хрен скорее.

Целочисленное деление у тебя (деление двух int друг на друга). 170 на 200 будет нуль.

Лучше сделай 170.0 (или даже 170 + 0.0) - уже должно выйти как надо.

P.S. Объявление переменной nao как double не поможет. Сначала выйдет целый нуль, а потом он станет вещественным.

P.P.S. Меня тоже иногда так же торкает :)

 
Mathemat >>:


P.S. Объявление переменной nao как double не поможет. Сначала выйдет целый нуль, а потом он станет вещественным.


поможет.

Переменные можно и на русском записывать? пао

 

1. Не поможет, только что проверил. Да это и так можно понять. Вначале идут вычисления справа от знака присваивания, и только потом результат конвертируется к типу переменной слева.

2. Да, русскими можно.

 

Неверное оставлю...

Забываю я об интах при делении где ожидаемый рез меньше 1 блин!

Пусть будет мне она позорным напоминанием...

(((

Чёрт скрывался в деталях: вместо инта юзать дабл

)))

и по моему тему поднимали уже...


int ПрАвт()
{
int пао;
double пам=170,пав=200;
//---
// бла-бла-бла вычисления для пам и пав;
пам=170; пав=200;
//---
if(пам==пав) return(100); 
if(пам==0) пам=1; 
if(пав==0) пав=1; 
//
пао=(пам/пав)*100;
return(пао);
}

а вот прямые вычисления то да... ну и фиг с ними...

Причина обращения: