Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 07.02.2011, 09:44   #1 (permalink)
Newbie
 
Registriert seit: 07.02.2011
Beiträge: 6
Standard MATH: Seltsame rundung?

Hallo zusammen,

kann es sein dass die "round" Funktion von A2 n bissle "ungenau" ist?

Beispiel bei 3 Werten laut "Adam Riese":

G=6 | W=2
W / G * 100 = 33,33%
p=33% (gerundet)

G=6 |W=3
W / G * 100 = 50%
p=50%

G=6 |W=1
W / G * 100 = 16,66%
p=17% (gerundet)

33+50+17 = 100

Soweit so toll. Arma rechnet aber mit "round"

1. 33%
2. 50%
3. 16%

Klar das hier dann 1% fehlt da 16,66 auf 16 "gerundet" wird.

Klar ich könnte mit ceil das fixen, aber dann würde aus 13.33 = 14 werden was auch sehr unschön ist.

Irgendwer ne Idee wie ich dies bewerkstellige?

VG Toby

Edit: hier mal der schuldige Code:


Zitat:

_x1 = _this select 0; // 3
_x2 = _this select 1; // 2
_x3 = _this select 2; // 1
_x4 = _this select 3; // 0

_iTotalCount = _x1+_x2+_x3+_x4;

_x1Percent = if ( _x1 >= 1 ) then { round (_x1/_iTotalCount*100) } else {"0"};
_x2Percent = if ( _x2 >= 1 ) then { round (_x2/_iTotalCount*100) } else {"0"};
_x3Percent = if ( _x3 >= 1 ) then { round (_x3/_iTotalCount*100) } else {"0"};
_x4Percent = if ( _x4 >= 1 ) then { round (_x4/_iTotalCount*100) } else {"0"};


Geändert von liKe2k1 (07.02.2011 um 09:47 Uhr).
liKe2k1 ist offline   Mit Zitat antworten
Alt 07.02.2011, 11:11   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Bei mir wird hier:
Code:
hint format ["%1",round ((1/6)*100)]
(korrekterweise) 17 ausgegeben und nicht 16.
Sicher, das du da nicht irgendwo im Script einen Fehler gemacht hast?
__________________

TeRp ist offline   Mit Zitat antworten
Alt 07.02.2011, 11:46   #3 (permalink)
Newbie
 
Registriert seit: 07.02.2011
Beiträge: 6
Standard

Sure, keine Fehler im Script, wie oben gepostet.

Code:
hint format ["%1",round ((1/6)*100)]
zeigt in der Tat 17 an. So soll es auch sein!

Aber:
Code:
_x1 = 3;
_x2 = 2;
_x3 = 1;
_x4 = 0;
_iTotalCount = _x1+_x2+_x3+_x4;

_x3Percent = if ( _x3 >= 1 ) then { round (_x3/_iTotalCount*100) } else {"0"};
hint format["%1", _x3Percent];
Das o.g. Script gibt mir die 16 aus.

Sehr seltsam, kann das jemand mal versuchen zu reproduzieren?

VG Toby
liKe2k1 ist offline   Mit Zitat antworten
Alt 07.02.2011, 12:54   #4 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Auch dein Script gibt bei mir 17 aus.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 07.02.2011, 19:22   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Auch bei mir ist das Ergebnis 17. Das kann am Fließkommaprozessor deines Rechners liegen!?

Teste einmal das:
Code:
private ["_x1","_x2","_x3","_x4","_iTotalCount","_x3Percent"];

_x1 = 3;
_x2 = 2;
_x3 = 1;
_x4 = 0;
_iTotalCount = _x1+_x2+_x3+_x4;

_x3Percent = if ( _x3 >= 1 ) then { round (_x3/_iTotalCount*100) } else {"0"};
hint format["%1", _x3Percent];

Geändert von Vienna (07.02.2011 um 19:30 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 08.02.2011, 09:23   #6 (permalink)
Newbie
 
Registriert seit: 07.02.2011
Beiträge: 6
Standard

Zitat von Vienna Beitrag anzeigen

Das kann am Fließkommaprozessor deines Rechners liegen!?

So scheint es, an meinem anderen Rechner bekomm ich auch die 17.

Auf meinem Netbook läuft es mit der 16.

Hardware:
Iten Atom 330 (DualCore + 2 virtual Cores) (4x 1.6 GHz)
4 GB Ram
NVidia ION mit 256 MB dedicated RAM
OS: WIndows 7 Ultimate (x64)
liKe2k1 ist offline   Mit Zitat antworten
Alt 08.02.2011, 16:15   #7 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Wie ich erst jetzt sehe, ist der Wert vor dem Runden 16,6666..., da kann es eigentlich nicht am Fließkommaprozessor liegen. Das würde mehr auf 16,4999... zutreffen.

Vielleicht solltest du Arma neu auf dem Netbook installieren. Möglicherweise ist dieses kleine Gerät mit dem doch recht umfangreichen Arma-Programm überfordert.

Teste dieses Rechenbeispiel einmal auf einem anderen Programm. z.B. Excel. Wenn dort der selbe Fehler auftritt, dann liegt es generell am Prozessor, was eine Reklamation beim Netbook rechtfertigen würde.
Vienna ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116