## RE: [saxon] casting double to integer

 RE: [saxon] casting double to integer From: Michael Kay - 2003-09-02 08:43:34 Attachments: Message as HTML ```In this expression: let maxCount := floor((\$maxValue - \$minValue)/\$delta) your first error is that you seem to be using "/" as a division operator. Use div for division. Also you seem to have omitted the "\$". To cast a double to an integer, use let \$maxCount := xs:integer((\$maxValue - \$minValue) div \$delta) The floor() function returns a value of the same type as its argument. (This is because the floor() of a very large double may be outside the range of values supported by the integer data type). Michael Kay -----Original Message----- From: saxon-help-admin@... [mailto:saxon-help-admin@...] On Behalf Of Oswald Campesato Sent: 30 August 2003 12:06 To: saxon-help@... Subject: [saxon] casting double to integer Hello, everyone: I have a simple question: how do I cast a quotient of two numbers (both retrieved from an XML file) as an integer in a 'for' loop? Example: ------------- { let maxValue := doc("test1.xml")/data/maxValue let minValue := doc("test1.xml")/data/minValue let delta := doc("test1.xml")/data/delta (: 'maxCount' is the upper limit in a 'for' loop :) let maxCount := floor((\$maxValue - \$minValue)/\$delta) for \$index in 0 to \$maxCount return \$index } The previous code results in the following error message: ----------------------- Error on line 54 Required type of second operand of 'to' is xs:integer; supplied value is xs:double ----------------------- I noticed the "define variable" construct, but how can this be used in conjunction with the preceding code? Suggestions are welcome... Cordially, Oswald _____ Do you Yahoo!? Yahoo! ; SiteBuilder - Free, easy-to-use web site design software ```

 [saxon] casting double to integer From: Oswald Campesato - 2003-08-30 11:06:31 Attachments: Message as HTML ```Hello, everyone: I have a simple question: how do I cast a quotient of two numbers (both retrieved from an XML file) as an integer in a 'for' loop? Example: ------------- { let maxValue := doc("test1.xml")/data/maxValue let minValue := doc("test1.xml")/data/minValue let delta := doc("test1.xml")/data/delta (: 'maxCount' is the upper limit in a 'for' loop :) let maxCount := floor((\$maxValue - \$minValue)/\$delta) for \$index in 0 to \$maxCount return \$index } The previous code results in the following error message: ----------------------- Error on line 54 Required type of second operand of 'to' is xs:integer; supplied value is xs:double ----------------------- I noticed the "define variable" construct, but how can this be used in conjunction with the preceding code? Suggestions are welcome... Cordially, Oswald --------------------------------- Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software```
 RE: [saxon] casting double to integer From: Michael Kay - 2003-09-02 08:43:34 Attachments: Message as HTML ```In this expression: let maxCount := floor((\$maxValue - \$minValue)/\$delta) your first error is that you seem to be using "/" as a division operator. Use div for division. Also you seem to have omitted the "\$". To cast a double to an integer, use let \$maxCount := xs:integer((\$maxValue - \$minValue) div \$delta) The floor() function returns a value of the same type as its argument. (This is because the floor() of a very large double may be outside the range of values supported by the integer data type). Michael Kay -----Original Message----- From: saxon-help-admin@... [mailto:saxon-help-admin@...] On Behalf Of Oswald Campesato Sent: 30 August 2003 12:06 To: saxon-help@... Subject: [saxon] casting double to integer Hello, everyone: I have a simple question: how do I cast a quotient of two numbers (both retrieved from an XML file) as an integer in a 'for' loop? Example: ------------- { let maxValue := doc("test1.xml")/data/maxValue let minValue := doc("test1.xml")/data/minValue let delta := doc("test1.xml")/data/delta (: 'maxCount' is the upper limit in a 'for' loop :) let maxCount := floor((\$maxValue - \$minValue)/\$delta) for \$index in 0 to \$maxCount return \$index } The previous code results in the following error message: ----------------------- Error on line 54 Required type of second operand of 'to' is xs:integer; supplied value is xs:double ----------------------- I noticed the "define variable" construct, but how can this be used in conjunction with the preceding code? Suggestions are welcome... Cordially, Oswald _____ Do you Yahoo!? Yahoo! ; SiteBuilder - Free, easy-to-use web site design software ```