Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] konetarkkuus ?

jaanas [27.07.2009 09:14:10]

#

miten Visual Basicissa saa konetarkkuuden luvun (macine precision) double- luvuille ?

Metabolix [27.07.2009 09:30:42]

#

... Minkä? Kelpaako tämä? VB6 toimii vain yhdellä alustalla, joten tilanne on kaikille sama.

jaanas [27.07.2009 09:40:05]

#

haluan siis machine epsilon:in

Metabolix [27.07.2009 09:52:10]

#

Voit laskea sen tuosta double-tyypin formaatista. 1 / 2^52 on suunnilleen 2.2204460492503131e-16. Voit myös testata asian laskemalla toistuvasti ykkösestä ja saadusta arvauksesta keskiarvon:

Dim e As Double, e2 As Double
' Arvataan aluksi kakkonen
e2 = 2
Do
  ' Laitetaan arvaus e:hen
  e = e2
  ' Lasketaan uusi arvaus
  e2 = (e + 1) / 2
' Lopetetaan, kun uusi arvaus pyöristyy samaksi kuin 1 tai edellinen arvaus.
Loop Until e2 = e Or e2 = 1

jaanas [27.07.2009 09:59:24]

#

löysin tällaisen

.NET Framework Class Library

Double.Epsilon Field

Represents the smallest positive Double value greater than zero. This field is constant.

Onko VB6.ssa mitään vastaavaa?

Merri [27.07.2009 12:44:29]

#

Etsitkö nyt vain pienintä mahdollista Double-lukua, vai haluatko saada aikaan sen, että kaksi samat luvut sisältävää kuitenkin eriarvoista Doublea olisivat verrattaessa samanarvoisia?


Lisäksi löysin tämmöisen aiheeseen liittyvän viestinpätkän:

lainaus:

double.Epsilon and float.Epsilon are not the same thing as DBL_EPSILON and FLT_EPSILON in C/C++ (which are defined as smallest positive number x, such that x + 1.0 is not equal to 1.0). In C/C++ these values are 1.192092896e–07F and 2.2204460492503131e–016 respectively. Notice that the exponent in either case is identical or really close the that type's decimal precision (7/7 and 15/16). Single.Epsilon is 1.401298E-45f and Double.Epsilon is 4.94065645841247E-324. Single precision is 7 digits in .NET and Double is 15 digits. 45 decimal places and 324 decimal places is nowhere near the precision of either type in .NET. Epsilon in .NET is defined as the smallest representable positive value; which means it can't be used for near floating-point equality

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta