webForumDet fria alternativet

7.18933216620203E-06 ??

ASP

7 svar · 374 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

När jag delar ett tal med ett annat som jag senare skall köra formatNumber på så får jag fel resultat eftersom att det blir ett error i uträkningen.

7.18933216620203E-06

Skulle jag vila ha till
ex.

7.18933

Hur gör jag det?

Medlem sedan mars 20025 907 inlägg
#2

Ähum, 7.18933216620203E-06 är väl samma sak som 7.18933216620203/1000 000?! För att få det till 7.18933 måste du först multiplicera det med 1000000 och sen köra det genom round-funktionen (round(talet,5))

Medlem sedan juli 200520 inlägg
#3

Du nämner att du får "ett error i uträkningen". Stora E står inte för error om det är det du syftar på, utan för exponent.

Medlem sedan okt. 20041 556 inlägg
#4

Okey, hursom helst så funkar det inte.

Medlem sedan mars 20025 907 inlägg
#5

Travoni skrev:

Okey, hursom helst så funkar det inte.

Inte ett speciellt bra svar. Hur ska vi kunna göra något åt det? Visa lite kod, ge oss ett felmeddelande, gör något!

Medlem sedan okt. 20041 556 inlägg
#6

Jo, så hära:

a = 139.200737
Response.Write Round((1/a)*1000000,5)
'Ger: 0.007184

Men

a = 0.007184
Response.Write Round((1/a)*1000000,5)
'Ger: 1.392007

Jag skulle vilja att ex2. skall ge 139,20073 Så att formeln är "vändbar", liksom detta exempel:

a = 1.2340
1/a = 0.81037

a = 0.81037
1/a = 1.2340
Medlem sedan dec. 20054 inlägg
#7

Jag tycker outputen ser lite lurig ut som det står. 1/139.2 blir i min miniräknare 0.007184 medan 1000000/139.2 (som det står i koden) blir 7184. Tar du sedan 1000000/7184 ger detta tillbaka 139.2. I min miniräknare alltså. Är det så att du har tappat ett par exponenter nånstans? Vad hände till exempel med "E-06" i ditt första inlägg?

Alltså, framför allt ser koden lite ful ut. En vändbar formel skrivs vanligt som a=(1-a);. Om a=1 innan koden körs, är a=0 efteråt och vice versa. Det skulle du ju kunna använda och vill du absolut skriva ut nåt annat, kan du ju skapa en vektor med två element. Sedan kan du skriva ut vektor(a) till fönstret eller vaddunuvill. Akta bara så att ditt program kör med nollbaserade vektorer (första elementet i vektorn har index 0). Annars får du skriva vektor(a+1) istället.

Alltså (syntax lite beroende på språk):

hejsan=Vector(139.200737, 0.007183870)

a=(1-a)
Response.Write Round(hejsan(a),5)
Medlem sedan mars 20025 907 inlägg
#8

Kan du förklara bättre vad det är du vill göra egentligen? Finns det någon logik i vad dina uträkningar ska bli? :q
Tar du bort *1000000 ur beräkningarna så kommer talen vara vändbara (bortsett från att du avrundar vid varje beräkning, så det kan bli skillnader ändå).

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)