Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Number of decimal places
Message
 
 
À
05/10/2010 02:08:06
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
Divers
Thread ID:
01483618
Message ID:
01483960
Vues:
47
>>The best I can do
>>
>>declare @t table (Value float null)
>>insert into @t
>>select
>>-41139.99
>>union all select
>>10062.99
>>union all select
>>1600000
>>union all select
>>134979.87
>>union all select
>>-154062.04
>>union all select
>>-153832.17
>>union all select
>>-1235677.922308
>>union all select
>>null
>>
>>select	T.value, F.*, F1.*, F2.* from @t T
>>cross apply (select CAST(Value as decimal(38,11)) as nValue) F
>>cross apply (select	CAST(nValue % 1 as varchar(40)) as cValue) F1
>>cross apply (select SUBSTRING(cValue, charindex('.', cValue)+ 1,LEN(cValue)) as Decimals) F3
>>cross apply (select patindex('%[1-9]%',REVERSE(Decimals)) as Non0) F4
>>cross apply (select LEN(Decimals) - (case when Non0 = 0 then LEN(Decimals) else Non0 - 1 end) as DecimalPointPos) F2
>>
>>but again, 11 seems to convert it to non-precise.
>
>You have to let go of the float.
>Any cast (as decimal ()) you do,
>there is always a float number where the conversion is wrong.
>Throw away FLOAT and uses DECIMAL!

You don't have to tell me that, I know. It's not my problem I was trying to solve.
If it's not broken, fix it until it is.


My Blog
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform