Q:

What determines the number of inodes available on a disk?

Is it based on a number determined when formatting a hard drive?
For instance:
$ df -Ti /
Filesystem     Type Inodes IUsed  IFree IUse% Mounted on
/dev/dm-0      ext4 983040 95683 887357   10% /

Where does that 983040 come from? Can we increase/decrease it? Within what limits?

A:

If you're talking about ext4 filesystems, it's based on the size of the filesystem.  Defaults to 1 inode per 16,384 bytes.  More information at Archwiki - ext4 - bytes per inode ratio
Note that this ratio can be revised at the time of filesystem creation, see man page for mkfs.ext4
To address the subsequent edits to the question, where you added some questions:

Where does that 983040 come from?

It comes from the filesystem size.  1 inode per 16,384 bytes of filesystem, by default.

Can we increase/decrease it? 

Yes, but not easily.  Backup the filesystem, recreate the filesystem using the "-i bytes-per-inode" argument in the man page.  Restore the filesystem contents.

Within what limits?

As shown in the man page, bytes-per-inode should not be set to less than the block size, otherwise you're likely to have more inodes than could ever possibly be used.  As  Stéphane Chazelas points out, empty files, devices, fifos, sockets, short symlinks consume an inode, but don't consume a block.
Do you really need to create more than 887,357 further files in the root filesystem ?

A:

It's not a per-disk measure, it's a per-filesystem measure. For many filesystems, yes it is determined at format time. For some filesystems, it's dynamic based on the filesystem usage, average file size, and other bits of information.

