Перейти к публикации

Всякие Простые Вопросы


GOLF_stream

Рекомендованные сообщения

5 минут назад, ex3m сказал:

 

# L =10.5 /*real

# string_length(itos(L*10)) /* 10 задаёт количество знаков

 

IF extract(itos(L*10),string_length(itos(L*10)),1)!="0"
   text_L=itos(floor(L,0))+","+itos((L-floor(L,0))*10)
ELSE
   text_L=itos(L)
ENDIF

1.jpg.d8fb736a63e85f7033f84d3ed83a93f8.jpg

Ссылка на сообщение
Поделиться на других сайтах


/*----------------------------------------------------------------

L=10.5

IF extract(itos(L*10),string_length(itos(L*10)),1)!="0"
   text_L=itos(floor(L,0))+","+itos((L-floor(L,0))*10)
ELSE
   text_L=itos(L)
ENDIF

/*----------------------------------------------------------------

Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, ex3m сказал:

/*----------------------------------------------------------------

L=10.5

IF extract(itos(L*10),string_length(itos(L*10)),1)!="0"
   text_L=itos(floor(L,0))+","+itos((L-floor(L,0))*10)
ELSE
   text_L=itos(L)
ENDIF

/*----------------------------------------------------------------

Ам, теперь бы переделать на 2 разряда? 

Просто не совсем с этими функциями.

Ссылка на сообщение
Поделиться на других сайтах

L=10.467489 /* real
des=1000 /* 1->0, ; 10-> 0,1; 100->0.01; 1000->0.001      задаёт количество знаков после запятой
IF extract(itos(L*des),string_length(itos(L*des)),1)!="0"
   text_L=itos(floor(L,0))+","+itos((L-floor(L,0))*des)
ELSE
   text_L=itos(L)
ENDIF

Ссылка на сообщение
Поделиться на других сайтах

У меня тоже была идея переводить в текст не по одному числу, а всю дробную часть, но вчера уже не "дожал" её.

Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, ex3m сказал:

задаёт количество знаков после запятой

А нет функции сосчитать количество символов?

des= функция количества символов (L-floor(L))-1  /* -1 - это типа точка

Ссылка на сообщение
Поделиться на других сайтах

А "дожимать" уравнения надо. Потому что в данном варианте работает некорректно. Если первый знак после запятой ноль. И если два первых нули.

Так что, "тщательнЕЕ надо". И проверять на самых неблагоприятных условиях.

Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, Ветерок сказал:

А "дожимать" уравнения надо. Потому что в данном варианте работает некорректно. Если первый знак после запятой ноль. И если два первых нули.

Так что, "тщательнЕЕ надо". И проверять на самых неблагоприятных условиях.

/*Исправил

 

/*----------------------------------------------------------------

L=11.017489 /* real
des=10000 /* 1->0, ; 10-> 0,1; 100->0.01; 1000->0.001
IF floor(L*des)-floor(L)*des!=0
   text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
ELSE
   text_l=itos(L)
ENDIF

/*----------------------------------------------------------------

0,001.PNG

Изменено пользователем ex3m
Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, Ветерок сказал:

Если первый знак после запятой ноль. И если два первых нули.

также можно подсчитать количество символов остатка и текстового остатка и дописывать недостающие нули.

1 минуту назад, ex3m сказал:

/*Исправил

 

/*----------------------------------------------------------------

L=11.017489 /* real
des=10000 /* 1->0, ; 10-> 0,1; 100->0.01; 1000->0.001
IF floor(L*des)-floor(L)*des!=0
   text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
ELSE
   text_l=itos(L)
ENDIF

/*----------------------------------------------------------------

Вроде работает!

еще бы авторазряд- и вапче автомат!

Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, fenics555 сказал:

еще бы авторазряд

что под этим подразумевается? Откуда железке знать сколько знаков надо человеку в каждом конкретном случае?

Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, Ветерок сказал:

Откуда железке знать сколько знаков надо человеку в каждом конкретном случае?

Ну а зачем в конце лишние нули после запятой? 

Допустим, устанавливаем des=10000, лишние нули в конце сами бы подтирались, а уж если надо округлить до ,0/,00 - уж des ручками перебиваем.

Хотя и так вполне рабочий вариант! Респект!

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, fenics555 сказал:

Ну а зачем в конце лишние нули после запятой? 

Так ты об этом. Это можно сделать. Надо сначала проанализировать количество значащих цифр. Потом сравнить с заданным и использовать меньшее.

Ссылка на сообщение
Поделиться на других сайтах
25 минут назад, fenics555 сказал:

Ну а зачем в конце лишние нули после запятой? 

Допустим, устанавливаем des=10000, лишние нули в конце сами бы подтирались, а уж если надо округлить до ,0/,00 - уж des ручками перебиваем.

Хотя и так вполне рабочий вариант! Респект!

 

21 минуту назад, Ветерок сказал:

Так ты об этом. Это можно сделать. Надо сначала проанализировать количество значащих цифр. Потом сравнить с заданным и использовать меньшее.

добавил стирание 2х последних "0" 

 

L=11.012430 /* real
des=10000 /* 1->0, ; 10->0,1; 100->0,01; 1000->0,001
IF floor(L*des)-floor(L)*des!=0
   IF extract(itos(L*des) , string_length(itos(L*des))-1 , 2)=="00"
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L))-2)
   ELSE
   IF extract(itos(L*des) , string_length(itos(L*des)) ,1)=="0"
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L))-1)
   ELSE
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
   ENDIF
   ENDIF
ELSE
   text_l=itos(L)
ENDIF

Изменено пользователем ex3m
Ссылка на сообщение
Поделиться на других сайтах

или вариант №2 

после вычисления удаляем "0"

 

L=11.01210 /* real
des=100000 /* 1->0, ; 10->0,1; 100->0,01; 1000->0,001
IF floor(L*des)-floor(L)*des!=0
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
ELSE
   text_l=itos(L)
ENDIF

/*удаление "0"

IF extract(text_L , string_length(TEXT_L)-1 , 2)=="00"
     text_l=extract(text_L , 1 ,string_length(TEXT_L)-2)
ELSE
IF extract(text_L , string_length(TEXT_L) , 1)=="0"
      text_l=extract(text_L , 1 ,string_length(TEXT_L)-1)
   ENDIF
ENDIF

Изменено пользователем ex3m
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, ex3m сказал:

или вариант №2 

вроде покороче, ну и L D H  часто заняты, в школах про X всегда учили :biggrin:

Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, ex3m сказал:

или вариант №2 

после вычисления удаляем "0"

 

исправление 

в предыдущем варианте удаляло "0" и у целых чисел

 

L=11.0100 /* real
des=1000 /* 1->0, ; 10->0,1; 100->0,01; 1000->0,001 количесво знаков после ","

 

/*конвертация в текст
IF floor(L*des)-floor(L)*des!=0
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
ELSE
   text_l=itos(L)
ENDIF

 

/*удаление "0"
IF search(text_l , ",")!=0
   IF extract(text_L , string_length(TEXT_L)-1 , 2)=="00"
      text_l=extract(text_L , 1 ,string_length(TEXT_L)-2)
   ELSE
      IF extract(text_L , string_length(TEXT_L) , 1)=="0"
         text_l=extract(text_L , 1 ,string_length(TEXT_L)-1)
      ENDIF
   ENDIF
ENDIF

Изменено пользователем ex3m
Ссылка на сообщение
Поделиться на других сайтах
25 минут назад, ex3m сказал:

в предыдущем варианте удаляло "0" и у целых чисел

запятая всегда в конце.

Ссылка на сообщение
Поделиться на других сайтах

Еще в Pro\Toolkit есть такая возможность, как написание своих собственных любых функций любой сложности и внедрение их в Creo.

• ProRelationFunctionRegister()
• ProRelationReadFunction()
• ProRelationWriteFunction()
• ProRelationArgscheckFunction()

 

Потом можно вставлять в уравнения выражения вроде этого:

 

S=DoubleToStr(D);

 

Однажды делал какую то функцию, что-то связано с отображением массы в граммах, если она менее определенной величины.

Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, fenics555 сказал:

запятая всегда в конце.

 

L=11.0100 /* real
des=1000 /* 1->0, ; 10->0,1; 100->0,01; 1000->0,001 количесво знаков после ","
/*конвертация в текст
/*после корнвертации в текст на выходе 2 варианта
IF floor(L*des)-floor(L)*des!=0
      text_l=itos(floor(L))+","+extract(itos(L*des) , string_length(itos(L))+1 ,string_length(itos(L*des))- string_length(itos(L)))
      /* текст (числа) с "," и числами после [дробное число]
ELSE
   text_l=itos(L)
   /* текст (числа) без "," [целое число]
ENDIF 

/*удаление "0"
IF search(text_l , ",")!=0
/* если в тексте есть  "," тогда выполняем нижеперечисленное [дробное число]
/* если в тексте нет "," ничего не делаем [целое число]

   IF extract(text_L , string_length(TEXT_L)-1 , 2)=="00"
      text_l=extract(text_L , 1 ,string_length(TEXT_L)-2)
   ELSE
      IF extract(text_L , string_length(TEXT_L) , 1)=="0"
         text_l=extract(text_L , 1 ,string_length(TEXT_L)-1)
      ENDIF
   ENDIF
ENDIF

Изменено пользователем ex3m
Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, ex3m сказал:

текст (числа) с "," и чи

Если до запятой будет 7 цифр- то всё отрабатывает, если 8 и больше - всё слитно. 

вариант очень даже рабочий, врятли кому понадобятся такие цифры :biggrin:

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...