37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 478
1

Обрезка незначащих нулей

09.08.2013, 15:53. Показов 5889. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какой есть метод, чтобы десятичные числа преобразовать в символы по следующей схеме 10.8000 -> 10.8, а 10.0000 ->10 ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2013, 15:53
Ответы с готовыми решениями:

Отбрасывание незначащих нулей
как сделать чтобы программа отбрасывала незначащие нули после запятой в строке (string) Например...

Удаление незначащих нулей из решета Эратосфена
Я создал решето Эратосфена (решето простых чисел), но не могу сделать так, что бы в решете остались...

Отображение незначащих нулей после запятой в коде
В процессе написания кода в VBA Excel возникло эстетическое желание придать одинаковый вид/длину...

Удаление из начала и конца строки незначащих символов [Qt]
В объекте QString нужно удалить все непечатные символы в начале и в конце. Подскажите, как это...

12
2386 / 2250 / 584
Регистрация: 27.05.2011
Сообщений: 7,709
09.08.2013, 16:14 2
регулярным выражением - самое простое что пришло в голову, или извращаться большой комбинацией строковых функций, вычисляя разные подстроки и позиции 0-лей. Возможно есть что-то дефолтное, но поскольку за час никто не дал ответа, предложил свой вариант.
0
37 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 478
09.08.2013, 16:22  [ТС] 3
Цитата Сообщение от crautcher Посмотреть сообщение
регулярным выражением - самое простое что пришло в голову, или извращаться большой комбинацией строковых функций, вычисляя разные подстроки и позиции 0-лей. Возможно есть что-то дефолтное, но поскольку за час никто не дал ответа, предложил свой вариант.
можете пример привести?
0
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
09.08.2013, 16:38 4
Цитата Сообщение от crautcher Посмотреть сообщение
регулярным выражением - самое простое что пришло в голову, или извращаться большой комбинацией строковых функций
Не такая большая получилась. Нужно только точку отсечь.
MySQL
1
replace( rtrim ( replace (поле, '0',' ') ), ' ', '0')
1
2386 / 2250 / 584
Регистрация: 27.05.2011
Сообщений: 7,709
09.08.2013, 16:46 5
Надо поставить библиотеку регулярок https://github.com/mysqludf/lib_mysqludf_preg потом через PREG_REPLACE уничтожаем нули, там ниже описано

Добавлено через 5 минут
Crast, отличный вариант, только с точкой косяк
MySQL
1
2
3
4
5
6
select replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 );
+----------------------------------------------------------+
| replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 ) |
+----------------------------------------------------------+
| 10.                                                      |
+----------------------------------------------------------+
0
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
09.08.2013, 16:48 6
Цитата Сообщение от crautcher Посмотреть сообщение
только с точкой косяк
так и написал.
0
2386 / 2250 / 584
Регистрация: 27.05.2011
Сообщений: 7,709
09.08.2013, 16:56 7
MySQL
1
2
3
4
5
select if (
substr( replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 ) , -1 ) = '.' , 
LEFT( replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 ) , length(replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 )) - 1 ) ,
replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 )
) as `no_null`;
exmpl
MySQL
1
2
3
4
5
6
7
8
9
10
11
mysql> select if (
    -> substr( replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 ) , -1 ) = '.' , 
    -> LEFT( replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 ) , length(replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 )) - 1 ) ,
    -> replace( rtrim( replace ( '10.0', '0',' ') ) , ' ' , 0 )
    -> ) as `no_null`;
+---------+
| no_null |
+---------+
| 10      |
+---------+
1 row in set (0.00 sec)
Цитата Сообщение от Crast Посмотреть сообщение
извращаться большой комбинацией строковых функций
так и написал
0
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
09.08.2013, 17:46 8
Цитата Сообщение от crautcher Посмотреть сообщение
так и написал
Для этого изобретена рекурсия, лол.
MySQL
1
replace( rtrim ( replace  ( replace( rtrim ( replace (поле,'0',' ') ), ' ', '0'),  '.',' ') ), ' ', '.')
Но лучше править в программе, чем с таким запросом.
0
2386 / 2250 / 584
Регистрация: 27.05.2011
Сообщений: 7,709
09.08.2013, 17:58 9
Цитата Сообщение от Crast Посмотреть сообщение
Для этого изобретена рекурсия
ну так покажи пример с рекурсией
0
70 / 70 / 5
Регистрация: 10.02.2013
Сообщений: 434
09.08.2013, 18:27 10
Цитата Сообщение от crautcher Посмотреть сообщение
так покажи пример с рекурсией
В сообщении выше она в одну строку разложена xDDD.
0
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
24.01.2023, 08:37 11
Лучший ответ Сообщение было отмечено borro как решение

Решение

Да ладно?
Неужели никто не допёр?

Приведите тип к FLOAT и выводите его.

MySQL
1
SELECT CAST("1.000" as FLOAT)
Будет выдано 1

MySQL
1
SELECT CAST("1.123" as FLOAT)
Будет выдано 1.123
0
1088 / 824 / 145
Регистрация: 25.07.2015
Сообщений: 1,829
24.01.2023, 09:24 12
Цитата Сообщение от Scally Посмотреть сообщение
Да ладно?
Неужели никто не допёр?
Конечно нет.
Всего-то 10 лет прошло, как один день.
Хотя может не все такие археологи ?
0
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
24.01.2023, 09:43 13
А кто смотрит на давность?
Я столкнулся с этой проблемой вчера, перерыл кучу форумов, где на такой вопрос просто отвечают - "Ты дурак. Зачем оно нужно?".
В итоге решение приснилось сегодня ночью.
Ну значит надо поделиться, раз нигде нет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2023, 09:43
Помогаю со студенческими работами здесь

Удаление из начала и конца строки незначащих символов
Написать функцию Split, которая будет с начала и конца строки удалять незначимые символы (пробелы,...

Машина Тьюринга. Создание аналогичного числа с добавлением (при необходимости) незначащих разрядов
Дано двоичное положительное число, состоящее не более чем из семи значащих разрядов. Получить...

Необходимо найти и посчитать максимальную последовательность нулей в последовательности нулей и единиц
Как бы Вы реализовали?

найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru