|
как убрать округление в дробном числе | ☑ | ||
---|---|---|---|---|
0
bug16
30.01.14
✎
17:55
|
вообщем с 8кой пока на "ВЫ".
Имеется регистр сведений с ресурсом Z1 типа число. Число длинной 14, точностью 8. Допустим делаю такую запись Регистр.Z1=Массив.z1; Где Массив.Z1 = 99,999999999999999999999999895 и в итоге Регистр.Z1 будет равен 100, а мне конкретно надо чтобы Регистр.Z1=99,999999999 то есть как бы срабатывает округление, а хочется чтобы было просто обрезание дробной части... Наверное надо конкретно Массив.Z1 как то обрезать... Подскажите в какую сторону смотреть? )) |
|||
1
Ndochp
30.01.14
✎
17:56
|
половину предпоследнего разряда вычти безусловно.
|
|||
2
Ndochp
30.01.14
✎
17:57
|
ТОчнее не предпоследнего, а последнего+1
|
|||
3
ДенисЧ
30.01.14
✎
17:58
|
Регистр.Z1=Цел(Массив.z1 * 1000000000)/1000000000
|
|||
4
Wobland
30.01.14
✎
17:58
|
а что, правда 100.0 будет при такой точности?
|
|||
5
bug16
30.01.14
✎
18:00
|
типа так Окр(Массив.U-0.000000005,8,0)
|
|||
6
bug16
30.01.14
✎
18:00
|
(4) ага..... ((
|
|||
7
Euguln
30.01.14
✎
18:00
|
(4) По крайней мере Окр(99,999999999999999999999999895, 2) = 100
|
|||
8
Ndochp
30.01.14
✎
18:02
|
(6) Регистр.Z1=Массив.z1-0,000 000 005;
|
|||
9
bug16
30.01.14
✎
18:07
|
(8) Благодарю за наводку ;)
|
|||
10
bug16
30.01.14
✎
19:33
|
хм... а теперь другой вариант получается, если Массив.z1=99,000000000000000000000000
тогда Регистр.Z1=Массив.z1-0.000000005=99,00000001 тоже не правильно получается (( |
|||
11
m-serg74
30.01.14
✎
19:36
|
(10) через Если не катит?
|
|||
12
NcSteel
30.01.14
✎
19:36
|
(10) Сделай правильно.
|
|||
13
hhhh
30.01.14
✎
19:57
|
(10) не 0 05 а 000049
|
|||
14
Prince-Sentido
30.01.14
✎
20:12
|
Вечер добрый!
Результат = ЭлементыФормы.Число.Значение; ЗначениеОкругления = ЭлементыФормы.Округлять.Значение; ЦелаяЧасть = Результат - Число("0,"+Прав(Результат,СтрДлина(Результат)-Найти(Результат, ","))); ДробнаяЧасть = Число("0,"+Прав(Результат,СтрДлина(Результат)-Найти(Результат, ","))); Результат = Число(Лев(ДробнаяЧасть,ЗначениеОкругления+2)) + ЦелаяЧасть; Сообщить(Результат); |
|||
15
Ненавижу 1С
гуру
30.01.14
✎
20:16
|
(14) это стёб?
|
|||
16
Ненавижу 1С
гуру
30.01.14
✎
20:16
|
ответ был в (3)
|
|||
17
Prince-Sentido
30.01.14
✎
20:20
|
(16) просмотрел, извиняюсь
|
|||
18
Ndochp
31.01.14
✎
09:27
|
(10) Ты в консоли проверял?
99,000000000000000000000000 -0.000000005= 98.999999995~ 99.00000000 откуда ты единичку на конце берешь я ХЗ |
|||
19
vhl
31.01.14
✎
10:51
|
(17) Создай тему@читай через строчку. Девиз мисты
|
|||
20
catena
31.01.14
✎
10:52
|
Интересно, 0.9 ближе к 1 или к 0?
|
|||
21
Wobland
31.01.14
✎
10:54
|
(20) к 0.91
|
|||
22
Ndochp
31.01.14
✎
10:55
|
(20) It depends.
Если у тебя 900 рублей, а товар стоит 1000, то ты ближе к тому чтобы купить его или нет? |
|||
23
catena
31.01.14
✎
10:56
|
(21)Мы ж идем в сторону уменьшения разрядности.
Еще к размышлению, между числами 0.(9) и 1 не найдется ни одного числа. Никакого. Ваще. Значит по определению они равны. |
|||
24
catena
31.01.14
✎
10:57
|
(22)Это другая задача :)
|
|||
25
Wobland
31.01.14
✎
10:58
|
(23) если ты сумела определить 0.(9) и 1, значит, они не равны
бармен, ещё кружечку! |
|||
26
Зойч
31.01.14
✎
10:58
|
(22) если ты в египте, то ты его купишь однозначно и еще останется
|
|||
27
Ndochp
31.01.14
✎
10:58
|
9 в периоде да, равны именно по определению. Но с такой разрядностью считать компы не умеют. А вот все недопериодные девятки единице могут быть равны только из физических условий задачи.
|
|||
28
Ndochp
31.01.14
✎
11:00
|
(25) Читайте математику, числа вводятся как ряды и для 0,(9) и 1 они совпадают. На пальцах не расскажу, институт был давно.
|
|||
29
Wobland
31.01.14
✎
11:03
|
(28) тоже давно было. но интуитивно имхается мне, множество чисел, где 0.(9)=1, несколько не вещественно
|
|||
30
Ненавижу 1С
гуру
31.01.14
✎
11:07
|
(29) вы просто поверьте, а поймете потом (с) Чайф
|
|||
31
Wobland
31.01.14
✎
11:08
|
(28) (30) а скажите ключевое слово для почитать на досуге, плз
|
|||
32
Ndochp
31.01.14
✎
11:08
|
(28)Не, освежил - как раз вещественные.
wiki:Вещественное_число#.D0.9D.D0.B0.D0.B8.D0.B2.D0.BD.D0.B0.D1.8F_.D1.82.D0.B5.D0.BE.D1.80.D0.B8.D1.8F_.D0.B2.D0.B5.D1.89.D0.B5.D1.81.D1.82.D0.B2.D0.B5.D0.BD.D0.BD.D1.8B.D1.85_.D1.87.D0.B8.D1.81.D0.B5.D0.BB "Два вещественных числа \alpha = [a_n] и \beta = [b_n], определённые соответственно фундаментальными последовательностями \{a_n\} и \{b_n\}, называются равными, если \lim_{n \to \infty} \left ( a_n - b_n\right ) = 0 " То есть, 0,(9) и 1 задаются рядами 0,9 0,99 0,999 ... и 1 1 1 1 1 соответственно. Разность их членов стемится к нулю, значит числа равны. |
|||
33
Ненавижу 1С
гуру
31.01.14
✎
11:09
|
||||
34
Ненавижу 1С
гуру
31.01.14
✎
11:09
|
+(33) кривая ссылка, в википедии набери строку "0,(9)"
|
|||
35
supremum
31.01.14
✎
11:12
|
Тут есть тонкость.
0.9(9)=1 - это по определению , но предел суммы дробей - да, равен единице. |
|||
36
Ndochp
31.01.14
✎
11:13
|
(35) Там не предел суммы. Там предел разности дальних членов фундаментальной последовательности.
|
|||
37
supremum
31.01.14
✎
11:15
|
(36) Монопеносуально.
|
|||
38
Ndochp
31.01.14
✎
11:23
|
(35) Кстати, откуда у тебя "но" взялось? ли ты очепятался, или там И должно стоять.
а то фраза "то-то равно единице, но то-то2 равно единице" не звучит. Противопоставления то нету. |
|||
39
catena
31.01.14
✎
11:24
|
(29)Это было одним из первых убийственных открытий на мехмате. После школы просто мир перевернулся. Так же, как и понимание того, что рациональных чисел больше, чем натуральных, хотя и тех и тех бесконечно много. А вещественных еще больше.
|
|||
40
Ndochp
31.01.14
✎
11:24
|
+(38) Не понятно, в чем тонкость.
|
|||
41
Ndochp
31.01.14
✎
11:25
|
(39) Рациональных же вроде столько же, сколько целых и натуральных, не?
|
|||
42
supremum
31.01.14
✎
11:26
|
(40) Это равенство не доказывается, а определяется, доказывается предел.
(41) Смотря как считать. |
|||
43
catena
31.01.14
✎
11:30
|
(41)В множестве вещественных чисел, множество рациональных плотно, а натуральных нет.
|
|||
44
Ненавижу 1С
гуру
31.01.14
✎
11:36
|
(41) в определенном смысле да
|
|||
45
Ndochp
31.01.14
✎
12:51
|
(42) Оно доказывается, см (32)
|
|||
46
Ndochp
31.01.14
✎
12:57
|
(43) Чтобы оценить количество рациональных чисел, нужно найти мощность их множества. Легко доказать, что множество рациональных чисел счётно. (с) вика.
А плотность это ни о чем. Есть более чем счетные множества, которые при этом не плотны. http://dic.academic.ru/dic.nsf/bse/93134/Кантора |
|||
47
Torquader
31.01.14
✎
13:33
|
Не, ребята, это всё хорошо, но округление отбрасыванием - это неверно.
Тогда для вас всегда допустимо, что 2=1.999999 Лучше округлять математически, а если остаются ошибки округления - потом их разносить по строкам, чтобы было наиболее похоже на правду. |
|||
48
supremum
31.01.14
✎
13:42
|
(46) Тут такая штука: на любом числовом отрезке длиной более нуля рациональных чисел больше чем целых.
С другой стороны да, есть взаимнооднозначное соответствие между между рациональными и целыми числами. |
|||
49
bug16
31.01.14
✎
19:41
|
корявенько, но сделал как то так..
Если Массив.U1<0 тогда Если НЕ (-Числ1=Цел(Массив.U1)) тогда Регистр.U1= -Числ1-0.99999999; Иначе Регистр.U1=Массив.u1; КонецЕсли; ИначеЕсли Массив.U1>0 тогда Если НЕ (Числ1=Цел(Массив.U1)) тогда Регистр.U1= Числ1+0.99999999; Иначе Регистр.U1=Массив.u1; КонецЕсли; КонецЕсли; |
|||
50
DS
31.01.14
✎
20:17
|
(49) Так и не понял, чем (3) не понравилось. Или оплата посимвольная?
|
|||
51
supremum
31.01.14
✎
21:24
|
Просмотрел...
(45) Нет, это не так. |
|||
52
supremum
31.01.14
✎
21:33
|
+(51) Вообще, элементарно доказывается, что 0,9(9)<>1
(32) Не значит! |
|||
53
bug16
01.02.14
✎
10:02
|
(50) вариант из (3) тоже не правильно отрабатывал...
|
|||
54
Ndochp
03.02.14
✎
11:15
|
(52) Нука?
И что не значит? берем определение вещественного числа по Кантору (ссылка приведена в (32)). Последовательность 1 1 1 1 ... фундаментальна по условию Коши Последовательность 0,9 0,99 0,999 ... фундаментальна по условию Коши Предел 1-0,999...9 равен 0 при росте числа девяток. По определению "Два вещественных числа ... определённые соответственно фундаментальными последовательностями, называются равными, если \lim_{n \to \infty}( a_n-b_n) = 0" Значит 1 = 0,9(9). Другое дело, что если брать определение по Веерштрассу, то там да, практически по определению. |
|||
55
supremum
03.02.14
✎
13:36
|
(54) Не вижу противоречия с (35)
1) Любой элемент этой последовательности принадлежат открытому интервалу: (0,1) - видно, что единица этому интервалу не принадлежит и ни один член последовательности этой единицы не достигает. 2) С другой стороны мы знаем точную верхнюю грань этой последовательности, знаем, что эта последовательность стремится к единице и вполне логично определить равенство, как равенство пределов (либо равенство предела разности нулю). Но это именно равенство пределов. Тут мы подходим к определению равенства через пределы фундаментальных последовательностей. Тут по сути интервал как бы замыкается с одной стороны. Но я не стал бы ставить равенства между границей множества и замыканием, все же разные понятия. |
|||
56
Ndochp
05.02.14
✎
18:41
|
(55)
а) А я про 35 и не писал. Я про (52) уже. б) первое утверждение из (55) - не верно. Так как 0,(9) = 1 по определению вещественных чисел "по Веерштрассу" (через бесконечные десятичные дроби), или это же доказывается через фундаментальные последовательности, что есть ОПРЕДЕЛЕНИЕ равенства вещественных чисел "по Кантору". Так что куда ни кинь, а 0,(9)=1. Нам вообще говоря не важно, где болтаются члены фундаментальной последовательности. Пусть хоть до n=10^10 они равны n^n, а потом 1, все равно последовательность фундаментальна, и число, которое она представляет есть именно ее предел. |
|||
57
supremum
06.02.14
✎
09:16
|
(56)
1) Почему не верно? пусть a_n=1-10^(-n) и N - целые больше нуля Для всех n в N a_n<1 - строгое неравенство 2) 0.(9)=1 - всего лишь другая запись lim a_n=lim b_m n, m стремятся к бесконечности, но не достигают ее. b_m=1 , m в N 3) Без разницы, как определять a_n: как сумму ряда или как числовую последовательность 4) Вейерштрасс 5) Мне больше нравятся Дедекиндовы сечения. |
|||
58
Ndochp
06.02.14
✎
10:03
|
(57)Так вещественное число это и есть lim a_n по сути, а не какой-то там член последовательности. Значит 0,(9) = 1
|
|||
59
supremum
06.02.14
✎
11:52
|
(58)
Тогда зачем такая запись? Вот тут и появляется недостаток такой записи. Она дает способ построения числа, а по построению все просто см. (51) п. 1. Возникает иллюзия, что последовательность достигает единицы, что не так. По мне лучше символ "0.9(9)" объявить другой записью единицы. Все, без "доказательств". Да вроде так и делается сейчас. Похоже тема давно себя исчерпала ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |