Автор Тема: Отображение десятичных чисел  (Прочитано 8698 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Почему php или  mysql обрезает числа после запятой. Пытался изменять в базе тип на double float и т.д. в базе выводится разделить а при выводе php его сьедает

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #1 : 15 Мая 2003, 17:53:14 »
покажи код
Не все коту матрица.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #2 : 15 Мая 2003, 17:58:33 »
да я вообщемто ничего особенного не делаю
вот так достаю из базы
$price =  number_format ($row ["price"],0,".",".");
ну и потом
echo "$price €";

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #3 : 15 Мая 2003, 18:02:16 »
Там, где у тебя нолик - нужно вставить число символов после запятой.
Не все коту матрица.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #4 : 15 Мая 2003, 18:28:12 »
спасибо

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #5 : 15 Мая 2003, 19:20:37 »
Только теперь он выводит числа в формате
125.000,00 а как сделать чтобы если десятичная часть отсутствует т.е. равна 0 не выводило 00 в конце т.е. 125.000

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Отображение десятичных чисел
« Ответ #6 : 15 Мая 2003, 20:27:25 »
Vad
Мой способ из области "через Ж", но в http://www.php.net/number_format я ничего подходящего не нашел.
if (substr($price, -3) == ".00")
	
$price substr($price0, -3);

Но по-моему использовать одинаковый символ как thousands и decimals separator - не самая лучшая идея. Вот более правильная альтернатива моему верхнему коду, которая ловит числа типа 123.4 (не превращает их в 123.40):
function my_number_format($num$decimals 2){
	
$price number_format($num$decimals"."",");
	
list(
$int_part$decimal_part) = explode("."$price);
	
$decimal_part strrev(intval(strrev($decimal_part)));
	
if (
$decimal_part == 0){
	
	
return 
$int_part;
	
} else {
	
	
return 
$int_part.".".$decimal_part;
	
}
}

echo 
my_number_format($row ["price"]);

Не претендую на звание "самый понятный код года", но этот способ я  проверил...
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #7 : 16 Мая 2003, 10:20:53 »
Спасибо
Да уж не думал что все так сложно

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #8 : 16 Мая 2003, 10:29:22 »

$dec 
substr($price, -2);
if (
intval($dec) == 0) {
  
$price substr($price0, (count($price)-3));
  print 
$price;
  
// пишем только целое
} else {
  print 
$price;
  
// пишем всю цену
}
« Последнее редактирование: 16 Мая 2003, 11:26:03 от Croaker »
Не все коту матрица.

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #9 : 16 Мая 2003, 10:31:37 »
должно работать
Не все коту матрица.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #10 : 16 Мая 2003, 11:24:53 »
А почему твоя функция выдает число в виде
125,000.75 разве не правильней десятичную часть отделять запятой а тысячи разделять точкой?

Оффлайн F.A.K.K.2

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Отображение десятичных чисел
« Ответ #11 : 16 Мая 2003, 11:27:08 »
Vad
Это англицкий вариант

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #12 : 16 Мая 2003, 11:28:44 »
Vad
Читай man по number_format().

десятичную чать можно от целой (как и тысячи) можно разделять каким угодно символом.
Не все коту матрица.

Оффлайн Vad

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 54
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.revision.gr
Отображение десятичных чисел
« Ответ #13 : 16 Мая 2003, 11:41:04 »
Цитировать
$dec = substr($price, -2);
if (intval($dec) == 0) {
  $price = substr($price, 0, (count($price)-3));
  print $price;
  // пишем только целое
} else {
  print $price;
  // пишем всю цену
}


не работает выдает только 2 последних символа

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
Отображение десятичных чисел
« Ответ #14 : 16 Мая 2003, 11:50:16 »
Цитировать
Vad:
не работает выдает только 2 последних символа


все работает.
Не все коту матрица.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28