Try this?
DECLARE @tempforAnshul TABLE (id INT, new FLOAT);
INSERT INTO @tempforAnshul SELECT 1, 45.67;
INSERT INTO @tempforAnshul SELECT 2, 45.675;
INSERT INTO @tempforAnshul SELECT 3, 123.45;
INSERT INTO @tempforAnshul SELECT 4, 345.34;
INSERT INTO @tempforAnshul SELECT 5, 8023545654;
SELECT id, FORMAT(new, 'G') FROM @tempforAnshul;
Gives you the following results:
id (No column name)
1 45.67
2 45.675
3 123.45
4 345.34
5 8023545654
It's probably also worth noting that FORMAT returns either NULL or an NVARCHAR, which seems to be what you want? However, you can't control the length of the NVARCHAR, so you might need to be a little careful here?
...and then I re-read your question and saw you were using SQL Server 2008. Well that's a pain as FORMAT didn't come in until 2012, but this hack would work:
WITH x AS (
SELECT id, REVERSE(CONVERT(NVARCHAR(50), CONVERT(DECIMAL(30,8), new))) AS val FROM @tempforAnshul),
y AS (
SELECT id, REVERSE(SUBSTRING(val, PATINDEX('%[^0]%', val), 100)) AS val FROM x)
SELECT
id,
CASE
WHEN RIGHT(val, 1) = '.' THEN LEFT(val, LEN(val)-1)
ELSE val
END AS val
FROM
y;