Имя: Пароль:
1C
1С v8
Пропадает ноль в дробной части числа вместо 12,30 в переменной 12,3
,
0 Luhtas
 
10.10.11
16:33
Пропадает ноль в дробной части числа вместо 12,30 в переменной 12,3 как исправить.
Тип переменной число, точность 2. При вводе, например без ноля 78,23 рубля - все нормально, а если ввести 78,30 руб., в переменную попадает 78,3 руб. Ноль куда-то пропадает. Точность везде 2 !!!
Подскажите, как исправить.
1 YF
 
10.10.11
16:34
(0) Че за бред, какие нули после запятой в переменной могут быть?
2 Euguln
 
10.10.11
16:34
Зачем?
3 ДенисЧ
 
10.10.11
16:34
О_о...

Пятница же ещё не скоро...
4 Euguln
 
10.10.11
16:34
Если для вывода - кури Формат
5 Asmody
 
10.10.11
16:35
формат тебе в помощь
6 Rie
 
10.10.11
16:35
(0) Ты действительно полагаешь, что 1.000 =/= 1.0?
7 Amiralnar
 
10.10.11
16:35
Пользуйтя свойством или функцией "Формат" - я х.. знает, куда ты там пытаешься его вывести...
8 andrewks
 
10.10.11
16:37
(6) я точно знаю, что 1 != 1.0
9 Luhtas
 
10.10.11
16:37
Элемент табличной части Сумма тип число, точность два.
Стр=Элементы.ТабЧасть.ТекущиеДанные;
Стр.Сумма=12,3 а фактически введено 12,30 ?
10 Amiralnar
 
10.10.11
16:38
(8) и давно это у вас?
11 Euguln
 
10.10.11
16:39
(9) не вижу противоречия. Чего не устраивает?
12 andrewks
 
10.10.11
16:39
(8) с тех пор, как нас познакомили с численными методами
13 SeregaMW
 
10.10.11
16:39
(0) Каштан говорите ну пойдемте посмотрим
14 Irbis
 
10.10.11
16:39
(9) Комп тупой и ленивый, как настоящий 1Сник, потому и не хочет незначащие нули отображать ни справа, ни слева.
15 asp
 
10.10.11
16:39
(12) угу, за 1 = 1.0 у нас с экзамена сразу выгоняли :)
16 ptiz
 
10.10.11
16:40
Ну точно - пятница!
17 Ненавижу 1С
 
гуру
10.10.11
16:41
(8),(15) ребята вы что-то путаете
1=1.0 безусловно

другое дело что float  и проч. нельзя на равенство сравнивать
18 Luhtas
 
10.10.11
16:42
Разобрался, "Формат" помог. Прошу прощения за торможение.
Спасибо.
19 andrewks
 
10.10.11
16:49
(17) 1 - это точное значение, единица _точно_

а 1.0 - это значение, вычисленное с точностью до 1-го знака после запятой. возможно, это 1, а возможно, 1.03, а может, 1.0000456(7)
20 Amiralnar
 
10.10.11
16:59
(19) Кто-то сказал, что 1.0 - оно у нас вычисленное?
21 Amiralnar
 
10.10.11
17:00
1.0 сама по себе. И равна 1.00000 и равна 0001.
22 Euguln
 
10.10.11
17:00
тогда уж 1 = 1.0(0)
23 Ненавижу 1С
 
гуру
10.10.11
17:01
(19) 1.0 это ТОЧНАЯ величина
24 andrewks
 
10.10.11
17:03
(23) точную величину записывают так: 1
а не 1.0,

так же, как -0 != 0 != +0
25 Amiralnar
 
10.10.11
17:09
(24) То у тебя ЧМ, то Матан. Ты еще геометрию повспоминай на форуме по 1с. Тут все такие тупые, никто в институте не учился.
26 Ненавижу 1С
 
гуру
10.10.11
17:10
(24) пруф-линки в студию
27 andrewks
 
10.10.11
17:11
28 Ненавижу 1С
 
гуру
10.10.11
17:12
(27) я про то, в каком ЯП не верно 1==1.0
29 Megas
 
10.10.11
17:12
Спасибо улыбнуло =)
30 ДенисЧ
 
10.10.11
17:12
(28) в С запросто такое может случиться.
31 Волесвет
 
10.10.11
17:12
1=1
1.0 это не 1
записать равенство между ними можно только при определенных условиях
32 Megas
 
10.10.11
17:13
(30) Как?  (31) Отчего.
33 Ненавижу 1С
 
гуру
10.10.11
17:14
(27) Отрицательный и положительный ноль это условные обозначения бесконечно малой, а это к числам как таковым не относится (это скорее процесс стремления)
(28) вот прям вот так напишу:

if(1==1.0)
{
 cout<<"Yes";
}

условие выполнится?
34 andrewks
 
10.10.11
17:17
35 Волесвет
 
10.10.11
17:17
(32) начнем с малого условия - они должны быть не строковые))
36 hhhh
 
10.10.11
17:18
1 тоже не точная величина. Просто 1.0 - это с точность до десятых, а 1 - с точностью до целых.
37 andrewks
 
10.10.11
17:18
+(34) но тут равенство уже выполняется. потому, как его просто _так определили_
38 izekia
 
10.10.11
17:19
(33) привести надо
39 Ненавижу 1С
 
гуру
10.10.11
17:19
(37) но числа то такого просто напросто нет
40 Jstunner
 
10.10.11
17:19
(38) само приведется
41 andrewks
 
10.10.11
17:21
(39) ну как нет?
ты хочешь сказать, что результат предела lim(n -> oo) (1/n) - это не число?
42 Ненавижу 1С
 
гуру
10.10.11
17:22
(41) число, только это число равно 0
43 izekia
 
10.10.11
17:22
(40) что именно приведется, правая часть или левая?
44 ДенисЧ
 
10.10.11
17:23
(32)
int i;
float f;

i = 1;
f = 2/2;

if u != f
 printf("Не равны\n");
else
 printf("Равны\n");
45 andrewks
 
10.10.11
17:23
(42) во, правильно
НО для _любого_ n значение функции f(n) = 1/n != 0
46 Ненавижу 1С
 
гуру
10.10.11
17:23
(43) естественно int к float
47 Ненавижу 1С
 
гуру
10.10.11
17:24
(45) знаю, а предел тут причем?
48 andrewks
 
10.10.11
17:25
(47) при том, что для n=1^10000000000000000000000000000000000 значение функции будет вычислено как 0, но на самом деле, это не 0, а 0.00......0  (в зависимости от точности)
49 Волесвет
 
10.10.11
17:25
хых всплыло из памяти, дословно не помню - " так такового абсолютного нуля не существует, есть бесконечно малая величина, которую и записывают как 0..."
50 Jstunner
 
10.10.11
17:26
(44) не знаю на каком овне ты это проверял, но vc++ говорит "Равны"
51 andrewks
 
10.10.11
17:26
+(48) невозможно во флоат записать 0. можно только 0.00...0
52 Ненавижу 1С
 
гуру
10.10.11
17:27
(48) так то виновата машинная точность, а 1.0==1
(49) очуметь

(44)


int i;
   float f;

   i = 1;
   f = 2/2;

   if (i == f )
       std::cout<<"YES";
   else
       std::cout<<"NO";

написало YES
53 Jstunner
 
10.10.11
17:28
(51) возможно. Даже бинарное представление == 00000...
54 Steel_Wheel
 
10.10.11
17:28
(32) неявное преобразование. В .NET такое даже не откомпилируется, надо явное преобразование вставлять
55 Steel_Wheel
 
10.10.11
17:29
(52) Неявное преобразование к int может несколько испортить результат
56 Ненавижу 1С
 
гуру
10.10.11
17:30
(55) а где оно там?
57 Steel_Wheel
 
10.10.11
17:31
(56) в условии. Впрочем, от IDE зависит
58 Jstunner
 
10.10.11
17:31
(55) тама нет преобразования к int
59 Ненавижу 1С
 
гуру
10.10.11
17:31
+(56) для сомневающихся
f = 2.0/2;
60 Ненавижу 1С
 
гуру
10.10.11
17:32
(57) в .NET тоже как бы к int не приводится
61 Steel_Wheel
 
10.10.11
17:33
(58) Дома проверю. Одно время в борлнде из-за похожей хни диплом пришлось перелопатить полностью
(60) Согласен. Я про обычный с
62 Jstunner
 
10.10.11
17:34
(61) в обычном стандартном си, int кастится к флоату
63 Jstunner
 
10.10.11
17:35
(62)+ что может привести к потери точности, т.к. не каждый инт влазит во флоат
64 izekia
 
10.10.11
17:37
(57) лол, от иде ничего не зависит
65 izekia
 
10.10.11
17:39
(59) да, сравнение - это фактически вычитание, соответственно инт приводится ... не подумал