Was ist der effizienteste Weg, um eine Nummer für eine bestimmte Genauigkeit zu kürzen?Was ist der effizienteste Weg, um eine Nummer für eine bestimmte Genauigkeit abzuschneiden?
Antwort
int ms = Convert.ToInt32(
Convert.ToString(DateTime.Now.Millisecond).Substring(0, 3));
oder
double Length = Math.Pow(10, (DateTime.Now.Millisecond.ToString().Length - 3));
double Truncate = Math.Truncate((double)DateTime.Now.Millisecond/Length);
EDIT:
Nach dem Ausführen sowohl die unten auf dem Code, den ich werde nach, die doppelte Methode funktioniert gut durch die Wiederverwendung von Variablen. Bei einer Iteration von 5.000.000 DateTime.Now (in der viele von beiden Überprüfungen übersprungen werden) benötigte die Methode SubString()
9598 ms, und die Methode Double
benötigte 6754 ms.
EDIT # 2: Bearbeitet in * 1000 in Tests, um sicherzustellen, dass die Iterationen ausgeführt werden.
-Code zu testen, wie folgt verwendet:
Stopwatch stop = new Stopwatch();
stop.Start();
for (int i = 0; i < 5000000; i++)
{
int MSNow = DateTime.Now.Millisecond * 1000;
if (MSNow.ToString().Length > 2)
{
int ms = Convert.ToInt32(
Convert.ToString(MSNow).Substring(0, 3));
}
}
stop.Stop();
Console.WriteLine(stop.ElapsedMilliseconds);
stop = new Stopwatch();
stop.Start();
for (int i = 0; i < 5000000; i++)
{
int MSNow = DateTime.Now.Millisecond * 1000;
int lengthMS = MSNow.ToString().Length;
if (lengthMS > 2)
{
double Length = Math.Pow(10, (lengthMS - 3));
double Truncate = Math.Truncate((double)MSNow/Length);
}
}
stop.Stop();
Console.Write(stop.ElapsedMilliseconds);
Console.ReadKey();
Was ist die * effizienteste * Art und Weise? – stacker
@stacker - Nehmen Sie beide und führen Sie sie durch eine 'Stoppuhr' und sehen Sie, welche schneller ist? –
Ich würde sagen, die 'Math.Pow' ist viel langsamer, aber es ist nur eine Vermutung, testen Sie es mit einem' StopWatch'. – IVlad
In einem DateTime
werden Milliseconds immer zwischen 0 und 999 besteht also alles, was Sie haben nicht zu tun.
Zitieren des MSDN Links, den ich bekanntgab in meiner Antwort "Die Millisekunde-Komponente, ausgedrückt als Wert zwischen 0 und 999." Scheint logisch, dass Sie nicht 32 Tage in einem Monat oder mehr als 999ms in einer Sekunde haben können. –
Math.Floor(num * Math.Pow(10, x) + 0.5)/Math.Pow(10, x)
Wo Ihre Präzision x
Nun, ich denke, ich habe die Antwort aus dem Zusammenhang gegeben. aber ich dachte, du fragst nach Rounding, Anyway ich kann nicht bekommen, was kürzen bedeutet in Zahlen, Entschuldigung tut mir leid, dass ich nicht den Kontext aufgegriffen habe. –
- 1. was ist der effizienteste Weg, um eine Liste
- 2. Was ist der effizienteste Weg, eine Liste von Wörterbüchern abzugleichen?
- 3. Was ist der effizienteste Weg, um Analytics Beacons zu speichern?
- 4. Was ist der effizienteste Weg, um leere ListBuffer zu erstellen?
- 5. Was ist der effizienteste Weg, um zwei Strings zu vergleichen?
- 6. Der effizienteste Weg, um eine neue Zeile auszugeben
- 7. effizienteste Weg, um eine Zeichenfolge zu 2 Dezimalstellen in C#
- 8. Der effizienteste Weg, um eine Guid in C#
- 9. Was ist der beste Weg, um eine Tabelle zu deduplizieren?
- 10. Was ist der effizienteste Weg, um eine Zeit (oder einen Zeitbereich) zu füllen?
- 11. Was ist der effizienteste Weg, um eine nicht-rechteckige ROI eines Bildes in OpenCV auszuwählen?
- 12. Der effizienteste Weg, um eine Warteschlange zu überwachen
- 13. Der effizienteste Weg, um eine mehrsprachige Website zu erstellen
- 14. Was ist der effizienteste Weg, um eine Benutzerdatenbank mit einem externen Mailinglistendienst zu synchronisieren?
- 15. Was ist der effizienteste Weg, um eine sortierte Reduzierung in PySpark durchzuführen?
- 16. Ist Drools der effizienteste Weg, um Geschäftsregeln/Logik abzubilden?
- 17. Was ist der effizienteste Weg, um eine Select-Anweisung mit einer "nicht in" Unterabfrage zu schreiben?
- 18. Was ist der effizienteste Weg, um eine Liste millionenfach zu suchen?
- 19. Der effizienteste Weg, um eine Seite durch bestimmte Zeitintervalle zu füllen?
- 20. Der effizienteste Weg, um eine Liste für eine Android App zu erstellen
- 21. Der effizienteste Weg, um eine bestimmte Anzahl von Elementen in einer db.Model ListProperty
- 22. eine bestimmte Nummer blockieren?
- 23. Was ist eine einzelne Genauigkeit/doppelte Genauigkeit in Java?
- 24. Was ist der richtige Weg, um eine Bildunterschrift mit html5
- 25. Was ist der beste Weg, um eine Sitemap zu erstellen?
- 26. Lucene: Was ist der richtige Weg, um eine Suche abzubrechen?
- 27. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 28. Was ist der effizienteste Weg, um ein negatives Lookbehind für einen optionalen Wert zu erhalten?
- 29. Setzen Sie die Genauigkeit für eine Float-Nummer in PHP
- 30. Was ist der einfachste Weg, um eine ArrayList umzukehren?
Von den anderen Antworten, wie es scheint, gibt es hier einige ESP los ist. Ich bin nicht psychisch, kannst du bitte etwas ausarbeiten. – leppie
@leppie: Von Revision 1: 'Ich möchte die nur 3 Ziffern der Millisekunden von System.DateTime bekommen. –