Merge "Convert division/multiplication/modulo results after calculation"

This commit is contained in:
jenkins-bot 2018-04-10 23:37:30 +00:00 committed by Gerrit Code Review
commit 078ff05bc7
2 changed files with 6 additions and 14 deletions

View file

@ -357,18 +357,8 @@ class AFPData {
* @throws AFPException
*/
public static function mulRel( $a, $b, $op, $pos ) {
// Figure out the type.
if ( $a->type == self::DFLOAT || $b->type == self::DFLOAT ||
$a->toFloat() != $a->toString() || $b->toFloat() != $b->toString()
) {
$type = self::DFLOAT;
$a = $a->toFloat();
$b = $b->toFloat();
} else {
$type = self::DINT;
$a = $a->toInt();
$b = $b->toInt();
}
$a = $a->toNumber();
$b = $b->toNumber();
if ( $op != '*' && $b == 0 ) {
throw new AFPUserVisibleException( 'dividebyzero', $pos, [ $a ] );
@ -385,10 +375,12 @@ class AFPData {
throw new AFPException( "Invalid multiplication-related operation: {$op}" );
}
if ( $type == self::DINT ) {
if ( $data === (int)$data ) {
$data = intval( $data );
$type = self::DINT;
} else {
$data = floatval( $data );
$type = self::DFLOAT;
}
return new AFPData( $type, $data );

View file

@ -1 +1 @@
(5 / 2 = 2) & (5. / 2 = 2.5) & (5 / 2. = 2.5) & (int(.5) = 0)
(5 / 2 = 2.5) & (5. / 2 = 2.5) & (5 / 2. = 2.5) & (int(.5) = 0)