randRangeNonZero( -1, 1 ) ( PM === 1 ? $._("multiply") : $._("divide") ) randRange( 0, 99999 )
randRange( 1, 5 ) randRange( 1, 5 )
A / pow( 10, A_DECIMAL ) A / pow( 10, B_DECIMAL ) ( PM === 1 ? ( A_DECIMAL - B_DECIMAL ) : ( B_DECIMAL - A_DECIMAL ) )

How many times do you need to multiply `localeToFixed(A_FLOAT, A_DECIMAL)` by ten to get `localeToFixed(B_FLOAT, B_DECIMAL)`?

How many times do you need to divide `localeToFixed(A_FLOAT, A_DECIMAL)` by ten to get `localeToFixed(B_FLOAT, B_DECIMAL)`?

POW_DIFF

init({ range: [ [ -1, 11 ], [ -1, 3 ] ], scale: [20, 40] }); var digitsA = KhanUtil.digits( A ); //Pad zeroes if need be for the decimal point while ( digitsA.length < A_DECIMAL + 1) { digitsA.push( 0 ); } var digitsB = digitsA.slice(); //For the leading zero 0.# only occurs with division if ( digitsA.length < B_DECIMAL + 1) { digitsA.push( ' ' ); digitsB.push( 0 ); } drawDigits( digitsA.reverse(), 0, 1); drawDigits( digitsB.reverse(), 0, 0); for ( var i = 0; i < POW_DIFF; i++) { if ( PM === 1 ) { arc( [ digitsA.length - A_DECIMAL + i, 1.5 ], 0.5, 0, 180, { stroke: "blue" } ); label( [ digitsA.length - A_DECIMAL + i, 2 ], i+1, "above" ); if ( i === POW_DIFF - 1 ) { //hack for the final arrow...is there a better way? line( [ digitsA.length - A_DECIMAL + i + 0.5, 1.5 ], [ digitsA.length - A_DECIMAL + i + 0.5, 1.46 ], { stroke: "blue", arrows: "->" } ); } } else { //to draw the final arrow if ( i === POW_DIFF - 1 ) { style({ arrows: "->" }); } arc( [ digitsA.length - A_DECIMAL - (i + 1), 1.5 ], 0.5, 0, 180, { stroke: "blue" } ); label( [ digitsA.length - A_DECIMAL - (i + 1), 2 ], i+1, "above" ); } } //draw a black ellipse to be used as a decimal point style({ fill: "#000" }); ellipse( [ digitsA.length - A_DECIMAL - 0.5, 0.8 ], [ 0.09, 0.06 ] ); ellipse( [ digitsB.length - B_DECIMAL - 0.5, -0.2 ], [ 0.09, 0.06 ] ); var labelstr = "The decimal point needs to be moved " + POW_DIFF + " time" + ( POW_DIFF !== 1 ? "s." : "."); label ([ digitsA.length + 0.5, 0.5 ], labelstr, "right", false);

Moving the decimal one position to the right is the same as multiplying by ten once.

Moving the decimal one position to the left is the same as dividing by ten once.

Thus, moving the decimal right `POW_DIFF` times is the same as multiplying by ten `POW_DIFF` times, or multiplying by `pow( 10, POW_DIFF )`:

`{localeToFixed(A_FLOAT, A_DECIMAL)} * {pow( 10, POW_DIFF )} = {localeToFixed(B_FLOAT, B_DECIMAL)}`

Thus, moving the decimal left `POW_DIFF` times is the same as dividing by ten `POW_DIFF` times, or dividing by `pow( 10, POW_DIFF )`:

`{localeToFixed(A_FLOAT, A_DECIMAL)} \div {pow( 10, POW_DIFF )} = {localeToFixed(B_FLOAT, B_DECIMAL)}`

You need to multiply by ten `POW_DIFF` time. You need to multiply by ten `POW_DIFF` times.

You need to divide by ten `POW_DIFF` time. You need to divide by ten `POW_DIFF` times.