2016-04-20 6 views
5

Für die längste Zeit, dachte ich IsNumeric("1.23E45")True zurückgegeben, weil die "E" steht für wissenschaftliche Notation, 1.23E45 1.23x10 sein zu machen.Warum gibt IsNumeric ("1.23D45") True zurück?

Kürzlich bemerkte ich IsNumeric("1.23D34")auch zurückgegeben True, und ich bin ratlos warum.

Sowohl D und E produzieren das gleiche Ergebnis:

?val("1.23d45") 
1.23E+45 

?val("1.23e45") 
1.23E+45 

Wie kommt das?

Antwort

11

Das kam in chat


Nach Wikipedia up ...

Fortran verwendet auch "D" mit doppelter Genauigkeit Zahlen zu bedeuten.

"UH Mānoa Mathematik» Fortran Lektion 3: Format, Schreiben, etc ". Math.hawaii.edu. 2012-02-12. Abgerufen 2012-03-06.

VBA hat noch viele Spuren seiner Vorfahren BASIC (Zeilennummern, GoSub..Return, Rem, etc.) - es passiert einfach so, dass BASIC seine Wurzeln in ... Fortran findet.

So, dass "D" für wissenschaftliche Notation anscheinend nichts mehr als eine Explosion aus der Vergangenheit ist.

Unterm Strich, vermeiden Sie verwirrend wer auch immer Ihren Code hält, und bleiben Sie bei "E" (oder "e"). Aber wissen Sie, dass "D" (oder "d") auch unterstützt wird, wenn Sie irgendeinen FORTRAN-Code an ... VBA portieren müssen.

+0

Schöne Geschichte. Also müsste das OP nach jedem Vorkommen von "D" -Charakter überprüfen, um definitiv den Zellinhalt zu bestätigen. Numerische – user3598756

+1

nette Geschichte, ich habe dieses Verhalten nie bemerkt und wäre völlig unfähig es zu erklären –

Verwandte Themen