webForumDet fria alternativet

Avrunda alltid uppåt

XML

9 svar · 519 visningar · startad av HeHo

Medlem sedan apr. 2000277 inlägg
Frågan#1

Finns det någon funktion som alltid avrundar ett tal uppåt?

Medlem sedan juni 200032 967 inlägg
#2

Menar du i xsl?

Medlem sedan apr. 2000277 inlägg
#3

ja!

Medlem sedan juni 200032 967 inlägg
#4

Det finns i xsl en funktion som heter floor() som avrundar neråt, och då kan man ju tänka sig att det borde finnas en ceil() också, men det gör det inte, av någon anledning.

Den enda lösningen jag kan komma på är att lägga på 0.5 och använda floor() på resultatet. Exempel

<xsl:value-of select="floor(@myValue+0.5)"/>

Mvh,

Medlem sedan apr. 2000277 inlägg
#5

OK!
Tack för hjälpen!

Medlem sedan feb. 20002 300 inlägg
#6

@nders skrev:

Det finns i xsl en funktion som heter floor() som avrundar neråt, och då kan man ju tänka sig att det borde finnas en ceil() också, men det gör det inte, av någon anledning.

Den enda lösningen jag kan komma på är att lägga på 0.5 och använda floor() på resultatet. Exempel

<xsl:value-of select="floor(@myValue+0.5)"/>

Mvh,

@myValue = 5.1

@myValue + 0.5 = 5.6

floor(@myValue) = 5

Det funkar nog inte så bra.. ;)

Medlem sedan juni 200032 967 inlägg
#7

Hmm, nej, helt klart inte. :) :r

Man får väl kanske ha en liten if-sats runt. XSL är krångligt.
Jag tänker till lite extra då. :)

Medlem sedan juni 200032 967 inlägg
#8

Följande är det min hårt ansträngda hjärna lyckas producera just nu. Om någon har en bättre lösning så lyssnar jag uppmärksamt. :)

<xsl:choose>
	<xsl:when test="@value-floor(@value)>0">
		<xsl:value-of select="@value+1" />
	</xsl:when>
	<xsl:otherwise>
		<xsl:value-of select="@value" />
	</xsl:otherwise>
</xsl:choose>

Mvh

Medlem sedan juni 200032 967 inlägg
#9

@nders skrev:

Det finns i xsl en funktion som heter floor() som avrundar neråt, och då kan man ju tänka sig att det borde finnas en ceil() också, men det gör det inte, av någon anledning.

Det är ren och skär lögn! ;)

Det visar sig att det visst finns, bara det att funktionen heter ceiling().

Använd alltså detta:

<xsl:value-of select="ceiling(@myValue)" />

Ledsen för all förvirring.

Jag förvirrade mig själv också, tydligen. :moose

Mvh

Medlem sedan apr. 2000277 inlägg
#10

ok! :e

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)