Forum Webscript.Ru

Программирование => PHP => Тема начата: Philip от 02 Декабря 2002, 09:47:16

Название: Народ, помогите.
Отправлено: Philip от 02 Декабря 2002, 09:47:16
Привет, отделяю целое от десятых

$a = 138.6;
$c = (int)$a;

$a = $a - $c;
echo $a;
?>

результат :

0.59999999999999

Почему, должно быть 0.6
Народ помогите, достало.

P.S. Не судите строго, c PHP второй день.
Название: Отделяю целое от десятых.
Отправлено: ThE0ReTiC от 02 Декабря 2002, 10:57:56
используй intval()
Название: Отделяю целое от десятых.
Отправлено: Philip от 02 Декабря 2002, 11:32:46
Не, не помогает

http://www.petrokard.ru/func.php - результат
текст :



Title here!


$a = 138.6;
$a = $a - intval($a);
echo $a;
?>

Название: Отделяю целое от десятых.
Отправлено: Tronyx от 02 Декабря 2002, 12:58:00
Philip попробуй ещё раз, может у тебя просто "старая" страница закэшировалась, потому что у меня всё нормально работает.
Название: Отделяю целое от десятых.
Отправлено: ThE0ReTiC от 02 Декабря 2002, 13:08:08
Хм...
Интерсено.
На 1.3.24/4.1.3(dev) результат неправильный
А на 2.0.40/4.2.3 все нормально
Название: Отделяю целое от десятых.
Отправлено: Tronyx от 02 Декабря 2002, 13:42:36
У меня 1.3.26/4.2.3
Название: Отделяю целое от десятых.
Отправлено: Philip от 02 Декабря 2002, 13:51:18
Во фигня.

У меня на 4.2.2 фигня прет 0.5999999999

а на 4.2.3 все нормально 0.6

это как вообще ??

А вообще люди, задача у меня такая, 113.6 это сумма в рублях
надо чтоб выводило 113 рублей 60 копеек, кто знает как это сделать ??
Название: Отделяю целое от десятых.
Отправлено: ThE0ReTiC от 02 Декабря 2002, 14:00:06
Ну ты спросил.
Хоть бы почитал чего:
http://php.spb.ru/php/propis.html
Название: Отделяю целое от десятых.
Отправлено: Oak от 02 Декабря 2002, 14:08:21
b = a * 100

int(b /100)  rub , (b%100) kop
Название: Отделяю целое от десятых.
Отправлено: Philip от 02 Декабря 2002, 14:13:23
Не секундочку, мне не нужно писать число прописью.
Тут дело такое, в результате вычислений я получаю различные числа с десятичным окончанием. (113.6, 101.3 и т.д)

Мне нужно в иметь целую и дробную часть в каждой из переменных.
$a = 101
$b = 0.3 и  т.д
С целой частью тут все понятно. $a = (int)$a;
а вот с дробной проблемы, не верно считается.
$a = $a - (int)$a;
Название: Отделяю целое от десятых.
Отправлено: Меняздесьдавнонет от 02 Декабря 2002, 14:18:29
list($rub,$kop)=explode(".",$summa);
Название: Отделяю целое от десятых.
Отправлено: Philip от 02 Декабря 2002, 14:22:01
Спасибо Вам Oak, большое, все зараобтало. супер.
Название: Отделяю целое от десятых.
Отправлено: Tronyx от 02 Декабря 2002, 15:00:34
Цитировать
А вообще люди, задача у меня такая, 113.6 это сумма в рублях
надо чтоб выводило 113 рублей 60 копеек, кто знает как это сделать ??

И ты этого не можешь сделать сам?! У нас в колледже это на первом курсе, как примеры простейших алгоритмов проходят!
Название: Отделяю целое от десятых.
Отправлено: rembo от 03 Декабря 2002, 06:39:54
С точки зрения математики 5.9(9) = 6 а вот почему это делает пхп это действительно интересно. Никогда с таким глюком не сталкивался.
Название: Отделяю целое от десятых.
Отправлено: Metaller от 03 Декабря 2002, 10:18:18
[OFF]Помню, когда я программил на бейсике для Бытового Компьютера "Электроника" :) там 2 в квадрате было 3,99999999899997999  или что-то подобное :)))[/OFF]
Название: Отделяю целое от десятых.
Отправлено: Меняздесьдавнонет от 03 Декабря 2002, 13:20:03
это происходит при приведении типов.
для инта и для флоата используется разное количество байт.
именно поэтому вариант оака работает - там все время один тип.
Название: Отделяю целое от десятых.
Отправлено: Maniac от 03 Декабря 2002, 16:10:51
Metaller
Цитировать

2 в квадрате было 3,99999999899997999 или что-то подобное ))

Наверное, там степени вычислялись по формуле x^n=exp(n*ln(x)))
Название: Отделяю целое от десятых.
Отправлено: Metaller от 03 Декабря 2002, 16:13:39
Maniac
Вполне возможно, но тогда меня это очень удивило :)
Название: Отделяю целое от десятых.
Отправлено: rembo от 04 Декабря 2002, 04:03:57
Даа вот что значить нестрогое определение типов в языке + невнимательность.