XSL - Redondeo xsl

 
Vista:

Redondeo xsl

Publicado por strogoff (1 intervención) el 12/06/2007 09:34:15
Hola, tengo la siguiente expresión;
format-number( .//Price div .//Quantity , '#.##0,00')
pero quiero que el resultado que me aparezca me redonde a múltiplos de 5, es decir #,#0 ó #,#5. No encuentro la forma de hacerlo. Alguna ayuda?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Redondeo a múltiplos de 5 en format-number()

Publicado por Alejandro (227 intervenciones) el 06/07/2023 16:25:32
Puedes utilizar una combinación de funciones de redondeo y cálculos aritméticos en XPath para lograr el redondeo a múltiplos de 5 en la expresión format-number(). A continuación se muestra cómo puedes hacerlo:

1. Primero, asigna el resultado de la división a una variable para poder trabajar con ella:
1
<xsl:variable name="result" select=".//Price div .//Quantity" />

2. Luego, utiliza la función floor() para redondear hacia abajo al múltiplo de 5 más cercano:
1
<xsl:variable name="roundedResult" select="floor($result div 5) * 5" />

3. Finalmente, utiliza la función format-number() para formatear el resultado redondeado con el formato deseado:
1
<xsl:value-of select="format-number($roundedResult, '#,#0')" />

Aquí tienes el código completo que implementa esta solución:

1
2
3
4
5
6
7
8
9
10
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" />
 
  <xsl:template match="/">
    <xsl:variable name="result" select=".//Price div .//Quantity" />
    <xsl:variable name="roundedResult" select="floor($result div 5) * 5" />
    <xsl:value-of select="format-number($roundedResult, '#,#0')" />
  </xsl:template>
 
</xsl:stylesheet>

Con esta solución, el resultado de la expresión `format-number(.//Price div .//Quantity, '#.##0,00')` se redondeará al múltiplo de 5 más cercano y se formateará según el patrón '#,#0'.

Puedes utilizar este enfoque en todas las consultas que realices a partir de ahora, adaptando la expresión XPath según tus necesidades y utilizando las funciones de redondeo y cálculos aritméticos de XPath para obtener el resultado deseado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar