|
Пропадает ноль в дробной части числа вместо 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
|
(26) wiki:Отрицательный_и_положительный_ноль
(25) скучно |
|||
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) да, сравнение - это фактически вычитание, соответственно инт приводится ... не подумал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |