Sida 1 av 1

Compare i Octave??? Löst!

Postat: 24 december 2024, 11:42:23
av pi314
Enligt "manualen".
x > y
True if x is greater than y.
https://docs.octave.org/latest/Comparis ... tml#XREFgt

Min kod (lite förenklad).

Kod: Markera allt

hhnow = 11;
mmnow = 37;

tomorrowavail = false;
if hhnow > 14 tomorrowavail = true; endif
if hhnow == 13 && mmnow>30 tomorrowavail = true; endif
Första if-satsen sätter tomorrowavail till true.

Varför?


Re: Compare i Octave??? Löst!

Postat: 24 december 2024, 11:50:33
av pi314
Ena variabeln var en sträng och den andra var ett tal.

Jag ändrade.

Kod: Markera allt

hhnow = strftime("%H", localtime (time ()));
mmnow = strftime("%M", localtime (time ()));
till

Kod: Markera allt

hhnow = str2num(strftime("%H", localtime (time ())));
mmnow = str2num(strftime("%M", localtime (time ())));
Sedan fungerade det.


Re: Compare i Octave??? Löst!

Postat: 24 december 2024, 12:39:34
av Mickecarlsson
Borde inte

Kod: Markera allt

if hhnow > 14 tomorrowavail = true; endif
vara

Kod: Markera allt

if hhnow > 14 tomorrowavail == true; endif

Re: Compare i Octave??? Löst!

Postat: 24 december 2024, 12:51:13
av pi314
Mickecarlsson:

Jag tror inte det.

= är tilldelningsoperatorn.
The ' = ' sign is called an assignment operator.
https://docs.octave.org/latest/Assignment-Ops.html

== är en jämförelseoperator.
Comparison Operators
https://docs.octave.org/v4.2.0/Comparis ... arison-Ops

När jämförelsevillkoret är uppfyllt, så vill jag tilldela värdet true till variabeln tomorrowavail.



PS: Det fungerar nu! :tumupp:

Re: Compare i Octave??? Löst!

Postat: 24 december 2024, 14:07:39
av Mickecarlsson
Såg det nu, är en php-kodare och läste din kod lite slarvigt.

Re: Compare i Octave??? Löst!

Postat: 24 december 2024, 17:06:21
av pi314
Hur vet man om man har en sträng eller ett tal?
Jag har nog gjort misstaget ovan tidigare.

Funktionen class
Om något, som i mitt fall ovan, ser ut som ett tal, men är en sträng, så kan få veta vad det är. Med hjälp av funktionen class.

Kod: Markera allt

>> hhnow = strftime("%H", localtime (time ()));
>> class(hhnow)
ans = char

>> hhnow = str2num(strftime("%H", localtime (time ())));
>> class(hhnow)
ans = double