int

int — Extracts an integer from a decimal number.

Description

Returns the integer part of x.

Syntax

int(x)  (init-rate or control-rate; also works at audio rate in Csound5)

where the argument within the parentheses may be an expression. Value converters perform arithmetic translation from units of one kind to units of another. The result can then be a term in a further expression.

Examples

Here is an example of the int opcode. It uses the file int.csd.

Example 469. Example of the int opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac   ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o int.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1

icount init 0
loop:
  inum = icount / 3
  inm  = int(inum)
  prints "integer (%f/3) = %f\\n", icount, inm
loop_lt icount, 1, 10, loop

endin
</CsInstruments>
<CsScore>

i 1 0 0
e
</CsScore>
</CsoundSynthesizer>


Its output should include lines like these:

integer (0.000000/3) = 0.000000
integer (1.000000/3) = 0.000000
integer (2.000000/3) = 0.000000
integer (3.000000/3) = 1.000000
integer (4.000000/3) = 1.000000
integer (5.000000/3) = 1.000000
integer (6.000000/3) = 2.000000
integer (7.000000/3) = 2.000000
integer (8.000000/3) = 2.000000
integer (9.000000/3) = 3.000000
      

Here is an example for the rounding-group, comparing the different rounding opcodes. It uses the file rounding-group.csd.

Example 470. Example of the rounding group.

<CsoundSynthesizer>
<CsOptions>
-odac       ;   
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32

; by tgrey 2020
instr 1

iLoopStart = p4
iLoopEnd   = p5
iOffset    = p6

iCount init iLoopStart

	
if(iLoopStart<iLoopEnd) then		; loop going up
	while iCount <= iLoopEnd do
		iVal = iCount+iOffset
		iRound = round(iVal)
		iInt = int(iVal)
		iFloor = floor(iVal)
		iCeil = ceil(iVal)
		print iVal, iRound, iInt, iFloor, iCeil
		iCount = iCount + 1		
	od
	
elseif(iLoopEnd<iLoopStart) then	; loop going down
	while iCount >= iLoopEnd do
		iVal = iCount+iOffset
		iRound = round(iVal)
		iInt = int(iVal)
		iFloor = floor(iVal)
		iCeil = ceil(iVal)
		print iVal, iRound, iInt, iFloor, iCeil
		iCount = iCount - 1		
	od
endif
endin
</CsInstruments>
<CsScore>
i1 0 .1 0 10 .5
i1 .2 .1 0 -10 .5
e
</CsScore>
</CsoundSynthesizer>


See Also

abs, exp, frac, log, log10, i, sqrt

Credits