Posted: Juli 29th, 2011 | Filed under: Java, Programmieren, Tutorials | Tags: auf zwei Nachkommastellen, BigDecimal, Gleitkommazahl, Java, runden | No Comments »
Will man in Java ausgerechnete Werte in einer GUI oder auf der Konsole darstellen hat man oft das Problem, dass man sehr lange Nachkommastellen erhält. Addiert man zum Beispiel zehn mal in einer Schleife den Wert 0.1 auf eine Variable die Initial 0 war so erhält man nicht wie erwartet als Ergebnis 1, sondern "0.9999999999999999".
double x = 0;
for (int i = 0; i < 10; i++) {
x = x + 0.1;
}
System.out.println(x);
// Ausgabe: 0.9999999999999999
Kein Anwender will solche Zahlen auslesen müssen. Leider kommt es beim Rechnen mit Double-Werten immer wieder zu diesem Problem. Dies liegt einfach daran, dass in Java zum Beispiel ein Double-Wert immer nur 64-Bit hat, also es rein logisch gar nicht möglich ist alle Zahlen "abzudecken". Deswegen wird lediglich eine approximative Darstellung einer reellen Zahl durch Double-Werte ermöglicht. Mehr dazu unter http://de.wikipedia.org/wiki/Gleitkommazahl. Der Einsatz von variabel großen Zahlen ist die Lösung für diese Probleme. Java bietet von Haus aus eine solche Klasse an: BigDecimal. Mit ihr ist es möglich mit beliebig großen oder beliebig kleinen Zahlen mit beliebig viel Nachkommastellen zu rechnen. Gerade für das wissenschaftliche Arbeiten zum Beispiel in der Physik wenn es auf Genauigkeit ankommt wäre es natürlich fatal mit Double-Werten zu Rechnen, die bezogen auf die Masse eines Elektrons katastrophale Ungenauigkeiten aufweisen würde.
BigDecimal bietet zusätzlich die Funktion an Zahlen nach mehreren Kriterien zu runden. Dies nutzen wir aus um unseren "vermurksten" Double-Wert zu korrigieren.
import java.math.BigDecimal; import java.math.RoundingMode; public class RundenInJava { public static void main(String[] args) { double x = 0; for (int i = 0; i < 10; i++) { x = x + 0.1; } System.out.println(x); // Ausgabe: 0.9999999999999999 BigDecimal xGerundet = new BigDecimal(x); // Runden auf 2 Nachkommastellen zur nähsten // Nachbarzahl, falls beide Nachbarn gleichweit // entfernt sind wird hochgerundet! System.out.println((xGerundet.setScale(2, RoundingMode.HALF_UP)).toString()); // Ausgabe: 1.00 } } |
BigDecimal bietet natürlich auch alle nötigen Grundrechenarten, anhand von Methoden an, um damit rechnen zu können.
Posted: Juli 18th, 2011 | Filed under: Software | Tags: AntiVir, entfernen, Werbung | No Comments »
Heute via Stadt-Bremerhaven.de auf ein interessantes Programm gestoßen. Antivir AD Disabler entfernt die Werbung von eurem AntiVir mit nur einem Klick.
Posted: Juli 4th, 2011 | Filed under: Betriebsysteme, Software | Tags: Batch, hide, Konsole, unsichtbar, VB | No Comments »
Vor einiger Zeit habe ich darüber berichtet, wie ihr über TrueCrypt einen Passwort-Dialog beim hochfahren eures PCs erzeugt. Das ganze habe ich damals über die Konsole gemacht. Nervig dabei war dass jedes Mal beim Hochfahren die Eingabeaufforderung im Hintergrund erschienen ist. Das sah ziemlich unschön aus.
Jetzt zeige ich euch, am Beispiel von TrueCrypt, wie ihr einen BATCH-Befehl oder eine BATCH-Datei unsichtbar ausführen könnt. Original sah der Befehl wie folgt aus:
"C:\Program Files\TrueCrypt\TrueCrypt.exe" /q /v /lz E:\musik_container
unsichtbares_Skript.vbs
Set ShellWSH = WScript.CreateObject("WScript.Shell")
MSG_String = "cmd /C " & chr(34) & "C:\Program Files\TrueCrypt\TrueCrypt.exe" & chr(34) & " /q /v /lz E:\musik_container" Ret = ShellWSH.Run (MSG_String,0,False)
Im String “MSG_String” steht das auszuführende Kommando. cmd /C ruft lediglich die Kommdozeile mit anschließendem Schließen auf. Hochkomma müssen in VB mit chr(34) escaped und mittels & wieder mit dem restlichen String verbunden werden.
Posted: Juli 2nd, 2011 | Filed under: Betriebsysteme, Tutorials | Tags: anmelden, automatisch anmelden, ohne Passwort, Schnellstart, Windows 7 | No Comments »
1. In den Ausführen Dialog cmd eingeben und mit STRG + SHIFT + ENTER bestätigen (Konsole mit Administrationsrechten).
2. control userpasswords2 eingeben und mit ENTER bestätigen.
3. Haken bei jeweiligem Benutzer entfernen und auf Übernehmen klicken.
4. Passwort eingeben und bestätigen.