- Forum-Beiträge: 29
23.02.2014, 10:29:35 via Website
23.02.2014 10:29:35 via Website
ich programmiere immoment an einer kleinen App nur stehe ich vor einem Problem bzw. ich kann mir das nicht erklären, wie die Werte entstehen.
Hier mal mein Code:
2
3 import java.util.Timer;
4 import java.util.TimerTask;
5
6 import android.app.Activity;
7 import android.os.Bundle;
8 import android.util.Log;
9 import android.view.Menu;
10 import android.view.View;
11 import android.view.View.OnClickListener;
12 import android.widget.Button;
13 import android.widget.TextView;
14
15 public class MainActivity extends Activity implements OnClickListener{
16
17 private Button click;
18 private Button but1;
19 private Button but2;
20 private Button but3;
21
22 private double Gesamt = 0;
23 private double secondcount;
24 private double zaehler1;
25
26 @Override
27 protected void onCreate(Bundle savedInstanceState) {
28 super.onCreate(savedInstanceState);
29 setContentView(R.layout.activity_main);
30 click = (Button) findViewById(R.id.button1);
31 click.setOnClickListener(this);
32 but1 = (Button) findViewById(R.id.button2);
33 but1.setOnClickListener(this);
34 aktualisieren();
35 starteCount();
36 }
37
38
39 @Override
40 public boolean onCreateOptionsMenu(Menu menu) {
41 // Inflate the menu; this adds items to the action bar if it is present.
42 getMenuInflater().inflate(R.menu.main, menu);
43 return true;
44 }
45
46
47 @Override
48 public void onClick(View v) {
49
50 if(v.getId() == R.id.button1) {
51 Gesamt = Gesamt + 1.0;
52 aktualisieren();
53 }
54
55 if(v.getId() == R.id.button2) {
56 if(Gesamt >= (int) Math.pow(1, 1)*50) {
57 Gesamt = Gesamt - (Math.pow(1, 1)*50);
58 zaehler1 = zaehler1 + 0.1;
59 aktualisieren();
60 }
61 }
62 Secondcount = zaehler1;
63 aktualisieren();
64 }
65
66 private void starteCount()
67 {
68 new Thread(new Runnable() {
69 public void run(){
70 Count();
71 }
72 }).start();
73 }
74
75 private void Count() {
76 Timer timer = new Timer();
77 TimerTask task = new TimerTask() {
78 public void run(){
79 MainActivity.this.runOnUiThread(new Runnable() {
80 public void run() {
81 Gesamt = Gesamt + secondcount;
82 aktualisieren();
83 }
84 });
85 }
86 };
87 timer.schedule(task, 0, 1000);
88 }
89
90 public void aktualisieren(){
91 TextView secondcount = (TextView) findViewById(R.id.secondcount);
92 secondcount.setText(Double.toString(secondcount) + " Secondcount");
93 TextView Gesamt = (TextView) findViewById(R.id.Gesamt);
94 Gesamt.setText(Double.toString(Gesamt) + " Gesamt");
95 but1.setText(Integer.toString( (int) ( Math.pow(1, 1)*50)));
96 }
97 }
Also ich habe einen secondcount, der sich immer um 0.1 erhöht, wenn der Benutzer auf den Button drückt. Nur wenn der Wert von Secondcount 0.1 beträgt und dieser 3 Sekunden ausgeführt wird, ergibt Gesamt nicht wie zu erwarten 0.3 sondern 0.300000000000007, das kann ich mir nicht erklären :/ Das Problem tritt mit 0.5 nicht auf.
Weiß jemand wie mein Programm da auf so eine Kommazahl kommt?
— geändert am 23.02.2014, 10:30:31
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.