VBA тъпни
5 отговора
246 прегледа
VBA тъпни
Някой може ли да ми обясни що за простотии са т'ва:
100.8 - 100.7 -> 0.0999999999999943
CSng(100.8) - CSng(100.7) -> 0.1000061
CSng(100.8) - 100.7 -> 0.10000305175781
и само:
CSng(100.8 - 100.7) -> 0.1
CDec(100.8) - CDec(100.7) -> 0.1
работят (ама трябва да ги декларирам Variant вместо Double).
<цензура> ти Визуалния Бъзик, <цензура> ти чудото...
100.8 - 100.7 -> 0.0999999999999943
CSng(100.8) - CSng(100.7) -> 0.1000061
CSng(100.8) - 100.7 -> 0.10000305175781
и само:
CSng(100.8 - 100.7) -> 0.1
CDec(100.8) - CDec(100.7) -> 0.1
работят (ама трябва да ги декларирам Variant вместо Double).
<цензура> ти Визуалния Бъзик, <цензура> ти чудото...
Редактирано от Щиpлиц на
Re: VBA тъпни
Ам'че тогава ги декларирай като Single, защо обвиняваш Бейсика за нещо, което е ограничено от хардуера?
Сегашните версии на Бейсик са достатъчно разширени, и поддържат доста добра точност на изчисленията.
Ограниченията са:
Double:
от -1.79769313486232E308
до -4.94065645841247E-324
от 4.94065645841247E-324
до 1.79769313486232E308
Single:
от -3.402823E38
до -1.401298E-45
от 1.401298E-45
до 3.402823Е38
----------------------------------
помислих, хареса ми, помислих пак...
Сегашните версии на Бейсик са достатъчно разширени, и поддържат доста добра точност на изчисленията.
Ограниченията са:
Double:
от -1.79769313486232E308
до -4.94065645841247E-324
от 4.94065645841247E-324
до 1.79769313486232E308
Single:
от -3.402823E38
до -1.401298E-45
от 1.401298E-45
до 3.402823Е38
----------------------------------
помислих, хареса ми, помислих пак...
Re: VBA тъпни
Това не е никаква тъпня!
И си е абсолютно нормално за числа, които се представят в вид мантиса+експонента. Такива са Single и Double.
За да си нямаш проблеми от подобен вид, използвай Currency или Decimal.
И изобщо не ми е ясно защо държиш точно да използваш Double.
Но това не значи, че във VB няма тъпни.
Тъпня според мен е Option Base оператора и това, че в документацията се твърди, че масивите можели да започват от 0 и 1.
Това дори не е тъпня, ами си е чиста простотия, затова във VB.NET този оператор вече липсва и масивите винаги започват от 0.
Бии, за да те уважават!
И си е абсолютно нормално за числа, които се представят в вид мантиса+експонента. Такива са Single и Double.
За да си нямаш проблеми от подобен вид, използвай Currency или Decimal.
И изобщо не ми е ясно защо държиш точно да използваш Double.
Но това не значи, че във VB няма тъпни.
Тъпня според мен е Option Base оператора и това, че в документацията се твърди, че масивите можели да започват от 0 и 1.
Това дори не е тъпня, ами си е чиста простотия, затова във VB.NET този оператор вече липсва и масивите винаги започват от 0.
Бии, за да те уважават!
Re: VBA тъпни
хм, как от 0 и от 1?
почват си от нула, но за ламерските цели са предвидени не до н-1, а до н. с една дума искаш 100, дава ти 101 клетки
а какво ще кажеш за това че може да ползваш недеклариран масив до 10 елемента?
почват си от нула, но за ламерските цели са предвидени не до н-1, а до н. с една дума искаш 100, дава ти 101 клетки
а какво ще кажеш за това че може да ползваш недеклариран масив до 10 елемента?
Re: VBA тъпни
Твърди се, че масивите започвали от 0 или 1. А това е тъпо, защото не е така.
А това, което ти твърдиш, че масивите започват винаги 0, също не е вярно, според мене. Пример (доказателство):
Ако направиш масив с долна граница 80 например, и горна 100. То тогава ако се опиташ да достъпиш всички елементи под 80, ще ти се появи съобщение за грешка N9 : "Subscript out of range". Което от своя страна показва, че елементите наистина са 21, а не 101 както ти твърдиш.
Бии, за да те уважават!
А това, което ти твърдиш, че масивите започват винаги 0, също не е вярно, според мене. Пример (доказателство):
Ако направиш масив с долна граница 80 например, и горна 100. То тогава ако се опиташ да достъпиш всички елементи под 80, ще ти се появи съобщение за грешка N9 : "Subscript out of range". Което от своя страна показва, че елементите наистина са 21, а не 101 както ти твърдиш.
Бии, за да те уважават!
Re: VBA тъпни
ами имах предвид сличаи от типа dim a(100) тогава мисля е така както го казах. това мисля си е по стандарта за бейсика.