Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

WTP abfragen

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #228880 by holch
Replied by holch on topic WTP abfragen
So, da hätten wir den Feature request von 2014: bugs.limesurvey.org/view.php?id=9416

Du kannst dich mit deinen Daten die du im Forum nutzt einloggen und den Feature Request unterstützen. Je mehr danach fragen, desto grösser die Chance, dass es irgenwann mal was wird.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago - 2 years 8 months ago #228881 by holch
Replied by holch on topic WTP abfragen

Aber @holch, klemmt bei Dir die Tastatur?
Ist, glaube ich, jetzt das zweite Mal, dass ein Strichpunkt kommt, wo ein Komma sein soll
{sum(preis, preis*prozent/100)}


Habe ich ja schon gleich im nächsten Post korrigiert. War aber nicht die Schuld der Tastatur sondern das habe ich mit Absicht so geschrieben, weil ich dachte ";" wäre richtig.

Irgendwo (Entweder bei Excel oder bei Google Sheets) wollen sie immer den ";" und das blieb dann wohl hängen. Limesurvey beschwert sich ja aber Gott sei Dank und weisst einen auf seine Fehler gleich hin. ;-)

Ich glaube es ist Excel. Das schlimme dort ist, dass Microsoft meint es wäre eine gute Idee die Formeln zu "übersetzen". Man kann also Beispiele aus dem Englischen nicht bei mir im portugiesischen Excel 1:1 umsetzen und ich bilde mir ein, dass es da auch einen Wechsel zwischen "," und ";" gibt. Völlig hirnrissig und ich merks mir nie was denn wo jetzt richtig ist. Es gibt dann tatsächlich Websites auf denen man dann nachschauen kann, wie die Formeln "übersetzt" werden müssen. Wahnsinn.

Bei Google Sheets dann nur die englischen Formeln, das finde ich wesentlich besser.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.
Last edit: 2 years 8 months ago by holch.

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 8 months ago #228883 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Ihr hattet Recht, die ganzen Gleichungen und Bedingungen funktionieren immer noch wenn ich jede Frage einzeln in eine Gruppe packe. Nun habe ich dieses Problem auch gelöst :)

Ich hoffe das war's erstmal mit Fragen, aber falls ich nochmal irgendwo nicht weiterkomme bin ich froh , dass man hier so schnell Hilfe bekommt.
Danke!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago #228888 by Joffm
Replied by Joffm on topic WTP abfragen

Das schlimme dort ist, dass Microsoft meint es wäre eine gute Idee die Formeln zu "übersetzen".

Komm, hör auf.
Ich habe mich gerade darüber ausgelassen, dass Microsoft immer besser zu wissen glaubt, was ich will.
Ich hasse das. 
Deine Korrektur hat sich dann mit meinem Post gekreuzt.


@Lena

Kann ich dir den Fragebogen auch privat schicken?

Ja, kannst Du natürlich immer. Aber sage es vorher. Ich schaue in diese Privaten Nachrichten nicht oft hinein
Dann schreibe ich Dir meine Mail-Adresse.

Joffm

 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 8 months ago #229232 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Hallo!
Ich habe nochmal eine Rückfrage. Das mit der Gleichung hat funktioniert.
Das Problem ist jedoch, dass je nachdem was der Befragte für Zahlen angibt, teilweise sehr lange Ergebnisse rauskommen.
Beispielsweise wird eine Ausgabe von 14 Euro angegeben und eine Mehrzahlungsbereitschaft von 80%.
Meine Formel lautet: sum((Ausgabenvorher), (Ausgabenvorher * (wtp / 100))).

Daraus wird dann folgende Zahl berechnet, was ja an sich richtig ist: 25,200000000000001 €. Jedoch sieht das ganze dann nicht so schön aus aufgrund der vielen Nachkommastellen.

Gibt es eine Gleichung mit der man einstellen kann, wie viele Nachkommastellen angezeigt werden sollen?
An sich weiß ich dass man dies bei Limesurvey einstellen kann, da ich jedoch den Fragetyp Gleichung habe, kann man dies nicht einstellen, soweit ich weiß.

Ich hoffe mein Anliegen ist verständlich.

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 8 months ago - 2 years 8 months ago #229234 by Joffm
Replied by Joffm on topic WTP abfragen
Hallo, Lena,
bei den implemetierten Funktionen findest Du das gewünschte:
[url] www.limesurvey.org/manual/ExpressionScri...mplemented_functions [/url]

Die Funktion "round(x,y)". Funktioniert wie in Excel.
Dann hast Du dies, (ohne Deine Klammer-Orgie)
{round(sum(Ausgabenvorher, Ausgabenvorher * wtp / 100),2)}

 

Sollte die Rundung auf zwei Stellen nicht funktionieren - es gab da einmal etwas - , macht man es auf die altbewährte Art.
Ich zitiere mich einmal selbst aus einem anderen Thread.

siehst Du, das ist der Vorteil des Alters.
Wir haben so etwas noch gelernt, was zu tun ist, wenn nur die Funktion "round()" für ganze Zahlen zur Verfügung steht.

Zunächst nimmst Du die Zahl mit der Zehnerpotenz mal, die Deiner gewünschten Nachkommastellenzahl entspricht.
10 für 1
100 für 2
1000 für 3
...

Also in Deinem Beispiel nimmst Du die 21,4475678... mit 100 mal und erhältst
2144,75678...
Diese rundest Du nun ganz normal und es gibt
2145 
Und jetzt machst Du den ersten Schritt wieder rückgängig, indem Du durch 100 teilst.
Voila: 21,45

In LS-Syntax

{round(100*sum(Ausgabenvorher, Ausgabenvorher * wtp / 100))/100}

Falls Du die zwei Nachkommastellen erzwingen willst, also "25,20" wird es komplizierter.
Ich habe aber einmal etwas dazu geschrieben; such einfach einmal.
Edit: Ich habe es gefunden.
[url] forums.limesurvey.org/forum/can-i-do-thi...rs-with-two-decimals [/url]


Jetzt stelle ich einmal eine Frage.

An sich weiß ich dass man dies bei Limesurvey einstellen kann,

Wo kann man in LimeSurvey die Anzahl der Kommastellen einstellen?
Ich kann eine Eingabe mit Regex validieren, aber sonst?
Da musst jetzt Du mir einmal auf die Sprünge helfen.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 years 8 months ago by Joffm.
The following user(s) said Thank You: Lena_12345

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 7 months ago #229428 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Danke für die Hilfe! Ich habe auch den Beitrag gefunden, in dem Sie erklären wie man 2 Nachkommastellen erzwingen kann. Leider funktioniert das bei mir nicht, oder ich habe irgendetwas falsch gemacht.

Bezüglich Ihrer Frage, wo man noch die Nachkommastellen einstellen kann:
Damit meinte ich die Validierung bei den normalen Einstellungen :)

LG

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 7 months ago - 2 years 7 months ago #229429 by Joffm
Replied by Joffm on topic WTP abfragen
Hallo, Lena,
ich habe dort ja dieses vorgeschlagen:
Vorauszuschicken ist, dass in diesem Thread auf eine Kommastelle gerundet, aber zwei Stellen angezeigt werden sollten.
{if(strpos(fixnum(round(Q1,1)),'.')==0,join(fixnum(round(Q1,1)),'.00'),if(strpos(fixnum(round(Q1,1)),'.')==strlen(fixnum(round(Q1,1)))-2,join(fixnum(round(Q1,1)),'0'),fixnum(round(Q1,1))))}

Wir lassen einmal die Formel für das Runden weg; nehmen Q1 als bereits gerundete Zahl. Dann bleibt
{if(strpos(Q1,'.')==0,join(Q1,'.00'),if(strpos(Q1,'.')==strlen(Q1)-2,join(Q1,'0'),Q1))}

D.h. die gerundete Zahl kann diese Formen haben
12 oder 12.3
Das obige geschachtelte IF macht nichts anderes, als
1. zu gucken, ob kein Punkt in der Zahl enthalten ist if(strpos(Q1,'.')==0
Also ist es eine ganze Zahl und es wird einfach ".00" angehängt ,join(Q1,'.00')

2. Falls der erste Fall nicht zutrifft, wird geguckt, ob ein Punkt an der vorletzten Stelle ist
{if(strpos(Q1,'.')==strlen(Q1)-2
Hierbei ist zu beachten, dass die erste Position der Funktion "strpos(x,y) der Index 0 hat - daher -2
Dann ist er eine Zahl der Form 12.3 und es wird nur eine "0" angehängt. join(Q1,'0')

3. Wenn beide Fälle nicht zutreffen - was eigentlich nicht sein kann - wird einfach die ursprüngliche Zahl zurückgegeben.

In dem anderen Thread ist ja eine etwas langwierige Diskussion darüber, dass diese Funktion natürlich von der Einstellung des Dezimaltrennzeichens abhängt - Punkt oder Komma.
Hier habe ich alles für Punkt als Trennzeichen geschildert; im anderen Fall muss man eben alles auf Komma ändern.

Und auch bei Dir kann die auf zwei Stellen gerundete Zahl ja auch nur die Formen annehmen:
12, 12.3 oder 12.34
Die ersten beiden Flle werden von der obigen Gleichung erschlagen, die dritte ist genau der dritte Fall, bei welchem enben nichts gemacht wird.

Das ist das ganze Geheimnis.
Einfach mit der Funktion "strpos(x,y)" gucken und mit "join(a,b,c,...)" das Benötigte anhängen

Und wenn es partout nicht klappt, wie immer: lss Export Deines Werkes.

Ich habe übrigens einen Samsung-Fernseher, aber - zugegeben - LG ist auch keine schlechte Marke.

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 years 7 months ago by Joffm.
The following user(s) said Thank You: Lena_12345

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 7 months ago #229523 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Vielen Dank für die ausführliche Erläuterung. Und wo genau muss ich diese Formel eintragen?
Ich habe ja auch diese Formel bereits in meinem Fragentext stehen: {round((Ausgabenvorher*(wtp/100)),2)}.

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 7 months ago #229526 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Ich habe nun folgende Formel verwendet:
if(strpos(fixnum(round((Ausgabenvorher * (wtp / 100), 2))), ',') == 0, join(fixnum(round((Ausgabenvorher * (wtp / 100), 2))), ',00'), if(strpos(fixnum(round((Ausgabenvorher * (wtp / 100), 2))), ',') == strlen(fixnum(round((Ausgabenvorher * (wtp / 100), 2)))) - 2, join(fixnum(round((Ausgabenvorher * (wtp / 100), 2))), '0'), fixnum(round((Ausgabenvorher * (wtp / 100), 2)))))

Es werden jetzt immer zwei Nachkommastellen angezeigt. Jedoch wird mir als Ausgabenerhöhung immer 2,00 Euro angezeigt. Obwohl es eigentlich andere Zahlen sein müssten..

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
2 years 7 months ago #229528 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Ich habe es nun durch ein wenig hin und her probieren geschafft!
Vielen Dank für die Formel :)

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
2 years 7 months ago - 2 years 7 months ago #229531 by Joffm
Replied by Joffm on topic WTP abfragen
Hallo, Lena,
und wo ist der lss Export dieser Fragen?

Ich werde jetzt nicht versuchen, diesen Teil Deiner Umfrage nachzubauen.

Hast Du Dir denn schon einmal anzeigen lassen, was die Teile der Funktion ergeben?
1. Die Multiplikation
2. Das Runden
3. Fixnum
4. Strpos
Und, ich hatte es schon sehr dezent angedeutet: Berechne die Erhöhung einmal vorher und nicht in jedem If- Teil jeweils zweimal.

Dann hättest Du eine Gleichung (ich habe einmal an "betrag" gedacht) mit
{fixnum(round(sum(Ausgabenvorher,Ausgabenvorher*wtp/100),2))}

und die Zahl wird angezeigt mit
{if(strpos(betrag, ',') == 0, join(betrag, ',00'), if(strpos(betrag, ',') == strlen(betrag) - 2, join(betrag, '0'), betrag))}

Joffm

P.S.
Du testest ja auf Komma als Dezimaltrennzeichen; hast Du dies auch so eingestellt?

Hier berechnest Du ja nur die Mehrausgabe, nicht den Gesamtbetrag; das war aber doch früher so gedacht, oder?

Meine Formel lautet: sum((Ausgabenvorher), (Ausgabenvorher * (wtp / 100))).


Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 2 years 7 months ago by Joffm.

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose