HTML5 float to string cast

Monkey Forums/Monkey Bug Reports/HTML5 float to string cast

michaelcontento(Posted 2012) [#1]
Hi,

I think i've discovered a very strange bug that seems to be specific for the html5 target. Just have a look at the source of the test which leads to this result:

Running debug js/html5 tests on macos:

  bugs.floattostringcasttest.FloatToStringCastTest
    TestManualCast 
    TestCastOnConcatination 
    TestCastInFuncReturnStatement [FAILED]

There was 1 failure:

1) FloatToStringCastTest.TestCastInFuncReturnStatement in bugs/floattostringcasttest.monkey
  Failed asserting that two strings are equal
  Expected: 12.0
  Actual  : 12

FAILURES!
Tests: 3, Failed: 1, Skipped: 0, Incomplete: 0.



Gerry Quinn(Posted 2012) [#2]
Looks like a bug all right. Here's a self-contained version:

Strict

Function Main:Int()
	Print "" + Float( 12 )
	Print Dummy( 12 )
	Print Dummy( 12.0 )
	Local x:Float = 12
	Print Dummy( x )
	Return 0
End


Function Dummy:String( val:Float )
	Return "" + Float( val )
End


Output in HTML5:
12.0
12
12
12

Output in GLFW:
12.0
12.0
12.0
12.0


marksibly(Posted 2012) [#3]
Casts are currently performed by 'pure' target code, so do differ from one target to another.

In general, it's probably not a good idea to expect String(blah) to always equal "blah" for a bunch of reasons.

That said, some kind of formatting/sprintf style module that provides at least semi-consistent conversion is probably a good idea.