Welcome to the LimeSurvey Community Forum

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

WTP abfragen

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 11 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
1 year 10 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
1 year 10 months ago - 1 year 10 months ago #229234 by Joffm
Replied by Joffm on topic WTP abfragen
Hallo, Lena,
bei den implemetierten Funktionen findest Du das gewünschte:
[url] manual.limesurvey.org/ExpressionScript_-...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: 1 year 10 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
1 year 10 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
1 year 10 months ago - 1 year 10 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: 1 year 10 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
1 year 10 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
1 year 10 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
1 year 10 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
1 year 10 months ago - 1 year 10 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: 1 year 10 months ago by Joffm.

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
1 year 10 months ago #229613 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Hallo!
Ich brauche nochmal Hilfe.
Ich hoffe Sie können mir sagen, inwiefern ich meinen Gleichung abändern muss.
Und zwar werden meine Zahlen jetzt zu stark gerundet. Wenn man z.B. 1,50 ausgibt müsste bei einer Preiserhöhung von 10% ja der neue Preis bei 1,65 liegen. Nun wird mir aber 1,70 angezeigt und eine Preiserhöhung von 20 Cent.

Ich habe folgende Formel verwendet:

Für die Preiserhöhnung:
f
Bedingte Bearbeitung; if(test,result_if_true[,result_if_false = ''])
(strpos(fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1)), ',') == 0, join(fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1)), ',00'), if(strpos(fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1)), ',') == strlen(fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1))) - 2, join(fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1)), '0'), fixnum(round((round((ExpendituresPrevious * (WTP / 100)), 2)), 1))))


für den neuen Preis:
if(strpos(fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1)), ',') == 0, join(fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1)), ',00'), if(strpos(fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1)), ',') == strlen(fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1))) - 2, join(fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1)), '0'), fixnum(round((round(sum(ExpendituresPrevious, ExpendituresPrevious * WTP / 100), 2)), 1))))

Please Log in to join the conversation.

  • Lena_12345
  • Lena_12345's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
1 year 10 months ago #229614 by Lena_12345
Replied by Lena_12345 on topic WTP abfragen
Ok, ich habe es nun selbst gelöst und frage mich wieso ich darauf nicht schon vorher gekommen bin. Manchmal hat man echt ein Brett vor dem Kopf wenn man schon den ganzen Tag an seinem Fragebogen sitzt...

Please Log in to join the conversation.

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
1 year 10 months ago #229615 by holch
Replied by holch on topic WTP abfragen

Ok, ich habe es nun selbst gelöst


Wäre natürlich super wenn du erklären würdest, was falsch war und wie du es korrigiert hast, für all die die später mit einem ähnlichen Probem auf deinen Post stossen.

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

Please Log in to join the conversation.

Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose