2016-03-31 7 views
1

Ben nüfus şöyle XQuery bazı matematik işlevlerini kullanarak ileride 10 yıl büyümeler extrapolating ediyorum:Bilimsel gösterim

let $db := doc("mondial.xml") 

for $country in $db/mondial/country 
    let $last_pop := $country/population[last()] 
    let $snd_last_pop := $country/population[last() - 1] 
    let $pop_growth := $last_pop div $snd_last_pop 
    let $yt2026 := 2026 - $last_pop/@year 

    return <country> 
    {$country/name} 
    <population year="2026" measured="extrap.">{ 
     $last_pop * math:exp($yt2026 * math:log($pop_growth)) 
    }</population> 
    </country> 
Ancak

, benim çıkış ya bilimsel gösterimde olduğu veya bir yeri vardır ondalık basamaklar.

<country> 
    <name>Albania</name> 
    <population year="2026" measured="extrap.">706860.8616776819</population> 
</country> 
<country> 
    <name>Greece</name> 
    <population year="2026" measured="extrap.">9.19404785580711E6</population> 
</country> 
<country> 
    <name>Macedonia</name> 
[...] 

xs:int() kullanımı bir hata üretir.

Bu değerleri tam sayılarda nasıl gösteririm? (Ve bu gösterimin adı nedir? 'Normal notasyon'?)

cevap

2

format-number(9.19404785580711E6, "0") kullanarak, kesirli basamaklar olmadan bilimsel olmayan çıktıları zorlayabilirsiniz. Değer, döndürülmeden önce döndürülür, böylece verilen ifade için sonuç 9194048 olur.

+0

Teşekkürler, yeterince iyi çalışıyor. Virgüllerin nasıl ekleneceğini bilmek istemezsiniz, böylece 760389 760,389 olur? – Mossmyr

+0

'biçim-numarası (9.19404785580711E6,", ## 0 ")' geri döndürür, '9,194,048' - '0' _required_ konumlarını gösterir (' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' kullanabilirsiniz. "Doldurma" konumlarını belirtmek ve binlerce ayırıcıyı gerektiği gibi eklemek. –