Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Double lub float w switchu


DarHor

Rekomendowane odpowiedzi

Opublikowano

Da się jakoś wstawić double lub float do switcha? Próbowałem to zapisywać do stringa ale nie działa.


	public float Timer = 0f;

	string TimerString = Timer.ToString ();
		switch (TimerString) {
		case 0.5:
			Debug.Log("0.5");
			break;
		case 0.8:
			Debug.Log("0.8");
			break;
		case 1.5:
			Debug.Log("1.5");
			break;
		case 2.5:
			Debug.Log("2.5");
			break;
		case 2.7:
			Debug.Log("2.7");
			break;
		}
Opublikowano

No ale skoro przekształcasz Timer na stringa, to czemu w switchu nadal wpisujesz floaty?

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Łap działający przykład

namespace Nauka1
{
    class Program
    {
        static void Main(string[] args)
        {
            float zmienna = 1.5f;
            String zmienna2 = Convert.ToString(zmienna);
            switch(zmienna2)
            {
                case "0,5":
                    Console.WriteLine("Wpisales 0.5");
                    Console.ReadKey();
                    break;
                case "1,5":
                    Console.WriteLine("Wpisales 1.5");
                    Console.ReadKey();
                    break;
                default:
                    Console.WriteLine("Wpisales test");
                    Console.ReadKey();
                    break;
            }

        }
    }

Pamiętaj o tym, że musi być case "1,5", a nie case "1.5". Na defaulta nie patrz, wrzuciłem cokolwiek, żeby tylko zobaczyć czy działa. Jakbyś był ciekawy jak do tego doszedłem, przekonwertowałem Float'a na String i sprawdziłem wcześniej Console.WriteLine(); co wyrzuca mi zmienna gdzie zapisałem przekonwertowany float, zobaczyłem, że jest to np. "1,5" i voila, mamy rozwiązanie :D.

 

@Hans Kloss PL

A o tym nie wiedziałem, dzięki za info :D.

Opublikowano

Pamiętaj o tym, że musi być case "1,5", a nie case "1.5". Na defaulta nie patrz, wrzuciłem cokolwiek, żeby tylko zobaczyć czy działa. Jakbyś był ciekawy jak do tego doszedłem, przekonwertowałem Float'a na String i sprawdziłem wcześniej Console.WriteLine(); co wyrzuca mi zmienna gdzie zapisałem przekonwertowany float, zobaczyłem, że jest to np. "1,5" i voila, mamy rozwiązanie :D.

Niekoniecznie, separator dziesiętny zależy od ustawień środowiska, u mnie domyślnie jest kropka.

 

Jak ktoś chce się bawić w takie switche (a założę się, że można się bez tego obyć) to powinien ustawić jawnie na początku programu CultureInfo, żeby u każdego działało identycznie.

using System;
...
using System.Globalization;
using System.Threading;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); // lub pl-PL jak chcemy przecinki

            // dalszy kod
        }
    }
}

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

Może ktoś mi podsunąć pomysł jak zrobić takie coś? Mianowicie chodzi mi o to że mam timer i jak wyżej. I chce żeby np gdy timer będzie równał się 1.2 to przechodzi do funkcji "aaaa1" jeśli timer będzie równał się 0.5 to np przejdzie do funkcji "bb1". Tak jak powyżej mi nie działa, zmieniłem w switchu co trzeba i obcinam tego stringa jednak wywala błąd że substring jest dłuższy niż całość. Może jest lepszy sposób. 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...