There's likely some work in the direction of numerical analysis, computable analysis, and formal logic -- all of which tries to make numerical programming more rigorous -- which might also address some of the philosophical unease people have about the real numbers.
In computable analysis, the real numbers are there, and we may compute directly on them using a machine model. In this framework, all computable functions are continuous, and conversely, nearly all continuous functions encountered in practice are computable. It's neat, but exposure to numerical analysis reveals two holes.
First hole is: The time and memory costs of such a theory are infeasible. You can try to fix it by replacing reals with rationals, but rationals are also not feasible for similar reasons. Ultimately, we are led to the floating point numbers, which allow us to rigorously control time and memory usage. We can attempt to make floats more rigorous by replacing them with intervals, but intervals are impractical for a different set of reasons.
Second hole is: People routinely compute things which are uncomputable. For instance, the Singular Value Decomposition in linear algebra is uncomputable, while also being a staple of numerical computing. This is clearly a problem for the definition of the term "uncomputable". When diagnosing the problem, you can see that in numerical linear algebra, there are three relevant notions: Forward error, backward error, and condition number. The example of SVD is "uncomputable" because it is impossible to devise an algorithm which has arbitrarily low forward error. But we can devise an algorithm with arbitrarily low backward error and condition numbers for the output matrices. If you consider instead computing the Jordan Normal Form, then this is in some sense "more uncomputable" than SVD, since any algorithm which guarantees a low backward error is forced to output high condition-numbered matrices; and vice versa.