When does Microsoft plan to add quad-precision floating support to its .NET CTS data types (such as IEEE 754 binary128)? I.e. when is it going to become available to .NET C#, C++, etc.? I have published a WP7 calculator app, and I am currently working
on an enhanced scientific mode in landscape display. Currently, the only available floating point is float and double; hence, I have a maximum of 15 digits precision available using double.

While double precision (theoretically) is all anyone ever needs, in a competitive sense, that's not true. Microsoft supports 32 significant digits in the scientific mode of its Windows calculator, presumably because it's written using the unmanaged C++ quad-precision
library. More importantly, other competitive platforms support more than double precision. Rgardless of any theoretical arguments about how someone may never need to use more than double precision, if quad precision is supported elsewhere, for practical,
competitive-product reasons .NET should support it too for WP7 apps.

The Decimal structure is not adequate for many reasons:

- Decimal was intended only for financial calculations where a loss of precision during rounding operations is unacceptable.

- Decimal is much (much) slower than double for most operations, primarily because double operations are done in binary,

**View Complete Post**

## Invalid Floating Point operation when used with group by

Hello,

This is related to a question I asked in the forum before and it looks like it is not handling the negative numbers within the log expression. Please let me know.

declare @insurance table

(

groupid int,

classid varchar(20),

creditamt varchar(20),

debitamt varchar(20),

insuraceflag varchar(30)

)

;with cte as

(

select groupid,classid,creditamt,debitamt,ROW_NUMBER() over (partition by GroupId order by ClassId ) as rn from @insurance

),

cte1 as

(

select t.GroupId,t.debitamt,t1.Amt from

(select * from cte where rn = 1)t

inner join (select GroupId,exp(SUM(LOG(CAST(isnull(creditamt,debitamt) as decimal(8,4))) )) as Amt from cte where rn <> 1 group by GroupID)t1 on t.GroupID = t1.GroupID

)

select * from cte1 -- this bombs when the inside log expression is NEGATIVE or ZERO.