4

2 つの整数値を除算して float として格納しようとしています。

void setup()
{
    lcd.begin(16, 2);

    int l1 = 5;
    int l2 = 15;
    float test = 0;
    test = (float)l1 / (float)l2;

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(test);
}

何らかの理由で、正しい値を保存して表示できないように見えるのは明らかです。「test」変数は常に 0 に設定されます。

整数値をキャストするにはどうすればよいですか?

4

2 に答える 2

6

これは LCD 印刷ルーチンに違いないため、使用したキャストは正しいものです。

LCDの代わりにシリアル印刷を使用して、Arduinoで試してみました。以下の完全なコード例では、予期される結果がシリアル モニター (メニューツール->シリアル モニターで開始) に表示されます。

Start...

5
15
0.33
0.33333334922790

最後の結果行は、7 ~ 8 桁の有効数字を持つ4 バイトの floatであることを確認します。

完全なコード例

/********************************************************************************
 * Test out for Stack Overflow question "Divide two integers in Arduino",       *
 * <http://stackoverflow.com/questions/13792302/divide-two-integers-in-arduino> *
 *                                                                              *
 ********************************************************************************/

// The setup routine runs once when you press reset:
void setup() {
    // Initialize serial communication at 9600 bits per second:
    Serial.begin(9600);

    //The question part, modified for serial print instead of LCD.
    {
        int l1 = 5;
        int l2 = 15;
        float test = 0;
        test = (float)l1 / (float)l2;

        Serial.println("Start...");
        Serial.println("");
        Serial.println(l1);
        Serial.println(l2);
        Serial.println(test);
        Serial.println(test, 14);
    }

} //setup()

void loop()
{
}
于 2012-12-11T18:29:43.950 に答える
3

lcd.printを出力する方法がわからないfloatため、代わりに整数を出力することになります。

于 2012-12-09T22:05:17.710 に答える