Monitoring decimal values on Perfmon using User Settables
Running this:

CREATE PROCEDURE dbo.set_user_counter1 
(
    @newvalue DECIMAL(18,2)
)
AS
BEGIN
    DBCC setinstance (
        'SQLServer:User Settable'
        , 'Query'
        , 'User counter 1'
        , @newvalue
    );
END;
GO

EXEC dbo.set_user_counter1 12.5


results in:


  Msg 2560, Level 16, State 9, Procedure set_user_counter1, Line 7
  Parameter 4 is incorrect for this DBCC statement.


Running the following shows you the "help" entry for the DBCC setinstance:

DBCC TRACEON (2588); /* show DBCC Help */
DBCC TRACEON (2520); /* show undocumented command help */
DBCC HELP ('setinstance')


This returns:


  dbcc setinstance (objectname, countername, instancename, value)
  
  DBCC execution completed. If DBCC printed error messages, contact your system administrator.


Unfortunately, that is no help determining if value can only be an int.

In fact, the MSDN page you linked states the following:


  A counter can monitor any single integer value