Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.02.2013, 15:26
Новичок на форуме
Отправить личное сообщение для wuldemar Посмотреть профиль Найти все сообщения от wuldemar
 
Регистрация: 07.02.2013
Сообщений: 5

функция умножения дробные числа
Код:
<script language='javascript'>
function do_math(f)
{
	var kolvo = f.elements['kolvo'].value;
   	var cena = f.elements['cena'].value;
	var res = parseInt(cena)*parseInt(kolvo);
	f.elements['r'].value = isNaN(res.toPrecision(1)) ? '' : res;
}  

</script>
<form action="" method="post">
  <table border="0" width="400px" align="center">
<tr>
<td width="50%" align="left"><b>Количество:</b><br><br></td>
<td width="50%" align="left">
 <input type="text" name="kolvo" onChange="do_math(this.form)"  size="15" maxlength="10">
  </td>
</tr>
<tr>
<td width="50%" align="left"><b>Цена:</b><br><br></td>
<td width="50%" align="left">
  <input type="text" name="cena" onChange="do_math(this.form)" size="15" maxlength="10" />
  </td>
  </tr>
  <tr>
  <td width="150" align="left"><p>
    <label><b>Всего:</b></label>
  </td>
    <td width="250" align="left">
	<input type="text" name="r"  size="15" maxlength="5" tabindex="4"/> 
	</td>
</tr>

</table>
</form>
Работает только с целыми числами, а надо чтоб при умножении 100*0.001 = 0.1 заранее благодарен

Последний раз редактировалось wuldemar, 07.02.2013 в 15:36.
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2013, 15:44
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script language='javascript'>
function do_math(f)
{
	var kolvo = f.elements['kolvo'].value;
   	var cena = f.elements['cena'].value;
	var res =cena*parseInt(kolvo);
	f.elements['r'].value = isNaN(res.toPrecision(1)) ? '' : res.toFixed(2);
}  

</script>
<form action="" method="post">
  <table border="0" width="400px" align="center">
<tr>
<td width="50%" align="left"><b>Количество:</b><br><br></td>
<td width="50%" align="left">
 <input type="text" name="kolvo" onChange="do_math(this.form)"  size="15" maxlength="10">
  </td>
</tr>
<tr>
<td width="50%" align="left"><b>Цена:</b><br><br></td>
<td width="50%" align="left">
  <input type="text" name="cena" onChange="do_math(this.form)" size="15" maxlength="10" />
  </td>
  </tr>
  <tr>
  <td width="150" align="left"><p>
    <label><b>Всего:</b></label>
  </td>
    <td width="250" align="left">
	<input type="text" name="r"  size="15" maxlength="5" tabindex="4"/> 
	</td>
</tr>

</table>
</form>

Последний раз редактировалось Deff, 07.02.2013 в 16:32. Причина: )
Ответить с цитированием
  #3 (permalink)  
Старый 07.02.2013, 15:56
Новичок на форуме
Отправить личное сообщение для wuldemar Посмотреть профиль Найти все сообщения от wuldemar
 
Регистрация: 07.02.2013
Сообщений: 5

Спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 07.02.2013, 16:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

wuldemar,
parseInt округляет дробные числа, т.к останавливается на десятичной точке.
function do_math(f)
{
	var kolvo = +f.elements['kolvo'].value;
   	var cena = +f.elements['cena'].value;
    var res =  kolvo *  cena
    f.elements['r'].value = isNaN(res.toPrecision(1)) ? '' : res;
}
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2013, 16:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от Deff
res//.replace(/(\.\d{2}.)*$/,'$1')
toFixed уже некатит?
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2013, 16:15
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

wuldemar,

Использовать parseFloat религия не позволяет ?
Ответить с цитированием
  #7 (permalink)  
Старый 07.02.2013, 16:18
Новичок на форуме
Отправить личное сообщение для wuldemar Посмотреть профиль Найти все сообщения от wuldemar
 
Регистрация: 07.02.2013
Сообщений: 5

Еще маленькая проблемка с запятой (0,1) не считает и выводит после запятой 0.1 вместо 0.10
Ответить с цитированием
  #8 (permalink)  
Старый 07.02.2013, 16:19
Новичок на форуме
Отправить личное сообщение для wuldemar Посмотреть профиль Найти все сообщения от wuldemar
 
Регистрация: 07.02.2013
Сообщений: 5

Сообщение от Hoshinokoe Посмотреть сообщение
wuldemar,

Использовать parseFloat религия не позволяет ?
я не волшебник, только учусь
Ответить с цитированием
  #9 (permalink)  
Старый 07.02.2013, 16:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

wuldemar, res.toFixed(2)
alert(.1.toFixed(2))
Ответить с цитированием
  #10 (permalink)  
Старый 07.02.2013, 16:43
Новичок на форуме
Отправить личное сообщение для wuldemar Посмотреть профиль Найти все сообщения от wuldemar
 
Регистрация: 07.02.2013
Сообщений: 5

function do_math(f)
{
var kolvo = f.elements['kolvo'].value;
var cena = f.elements['cena'].value;
var res =cena*parseInt(kolvo);
f.elements['r'].value = isNaN(res.toPrecision(1)) ? '' : res.toFixed(2);
}
Все спасибо работает норм!

Последний раз редактировалось wuldemar, 07.02.2013 в 17:34.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить регулярное выражение для числа с плавающей точкой boomrest Общие вопросы Javascript 4 25.02.2015 11:17
Помогите с Функцией lublupospat AJAX и COMET 4 18.03.2012 19:42
Регулярка на дробные числа shkarbatov Javascript под браузер 14 29.07.2011 01:05
Помогите получить числа rommeq Общие вопросы Javascript 6 15.04.2011 00:50
Пожалуйста помогите с функцией robinner Общие вопросы Javascript 5 12.05.2010 19:57