ロブリック

これバグですかね?(v2.13.0)

これをエミュレータで実行すると、「123」と表示されます。 

JavaScriptを見ると、'toNumber'となっているので、小数点以下は無視されて数値に変換されてるからこうなるんでしょうけども。

 

そして、これをロボホン本体で実行するとなんと「ゼロ」としゃべります。
なぜ、エミュレータとロボホン本体で実行結果が違うんでしょう?

 

ちなみに「123.456」を「123.000」に変えても結果は変わりません。
エミュレータでは「123」、ロボホン本体では「ゼロ」としゃべり、これを「123」に変えると、エミュレータでは「123」、ロボホン本体も「ひゃくにじゅうさん」としゃべります。
Robohon.value()に少数が絡んだ際のバグがあるのかな?と。

 

それと要望ですが、文字列を数値に変換するブロックは少数には対応できないのでしょうか?
自分で関数を作るしかないのでしょうか?

 

せっかくsin, cosや平方根など少数関係のブロックあるのに勿体なくないです?

 

追記

v2.14.1で確認したところ「サイレント修正」がなされた模様です。

ロボホンで実行しても「ゼロ」、エミュレータで実行しても「ゼロ」となります。

robohon.jsのソースを確認したところ


} else if (cmd === 'toNumber'){
    if (Robohon.mode == Robohon.MODE_EMURATOR) {
        let num = RobohonUtil.Zenkaku2HankakuNumber(arg1);
        if (isNaN(parseInt(num))){
            return RobohonUtil.kansujiConvert(num);
        } else {
            return parseInt(num);
        }
}


と、なっていました。

「サイレント修正」ではなく、投稿者に一報を入れるべきと考えますが、いかがでしょうか?

コメントする
1 件の返信 (新着順)

ロボホンサポートセンターによるとこれはバグではないそうです。
もう笑っちゃいますよね(笑)

不具合が判りやすいように、サンプルとしてあげたのにも関わらず、プログラムの書き方が悪いからこうなるんだそうです。はい(苦笑)

つまり、

var num;
Robohon.startBlocks();
num = 123.456
Robohon.speech(num);

と書けばいいみたいなことを言ってましたけど、これじゃ、Robohon.value()の検証にならないでしょうが・・・(笑)
大丈夫なのかな?この会社・・・。