Efficient Round edition with different rounding directionWhy round to even integers?How to prevent Round with hided fractionsVery different results from evaluating same expression with different precisionsProblems with rounding giving too many digits

"Marked down as someone wanting to sell shares." What does that mean?

Why can't I get pgrep output right to variable on bash script?

Why didn’t Eve recognize the little cockroach as a living organism?

How to get directions in deep space?

What should be the ideal length of sentences in a blog post for ease of reading?

Recursively move files within sub directories

I keep switching characters, how do I stop?

How to split IPA spelling into syllables

Relations between homogeneous polynomials

Offset in split text content

Rendered textures different to 3D View

How would a solely written language work mechanically

Is this saw blade faulty?

What is the tangent at a sharp point on a curve?

How do I lift the insulation blower into the attic?

A seasonal riddle

Are hand made posters acceptable in Academia?

Error in master's thesis, I do not know what to do

Put the phone down / Put down the phone

Does capillary rise violate hydrostatic paradox?

Writing in a Christian voice

What properties make a magic weapon befit a Rogue more than a DEX-based Fighter?

Why does a 97 / 92 key piano exist by Bosendorfer?

How to test the sharpness of a knife?



Efficient Round edition with different rounding direction


Why round to even integers?How to prevent Round with hided fractionsVery different results from evaluating same expression with different precisionsProblems with rounding giving too many digits













1












$begingroup$


As pointed out in this post, Mathematica has a special version of Round that




Round rounds numbers of the form x.5 toward the nearest even integer.




A comment by David G suggest that why not have differnt options Direction → "HalfDown","HalfUp","HalfEven","HalfOdd","Stochastic"



These days I need a version of Round to HalfUp. I write a quite ugly and slow function as below



myRound[x_, d_] := Module[,
c1 = (1./d)*10;
c2 = 1./d;
theDigit = Last@IntegerDigits@IntegerPart[x*c1];
If[theDigit >= 5,
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2] + 1)/c2],
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2])/c2]]]


speed test



In[267]:= 
myRound[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[267]= 30.7072, Null

In[268]:=
Round[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[268]= 0.285921, Null


So I am wondering if someone on this site already have developed an efficient toolkit for round matters?










share|improve this question











$endgroup$











  • $begingroup$
    Floor[x+0.5]?
    $endgroup$
    – Szabolcs
    2 days ago










  • $begingroup$
    @Szabolcs But Floor gives integer. Round can round at any digit
    $endgroup$
    – matheorem
    2 days ago






  • 2




    $begingroup$
    Are your aware of RoundingRule?
    $endgroup$
    – Silvia
    2 days ago






  • 1




    $begingroup$
    Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
    $endgroup$
    – Daniel Lichtblau
    2 days ago






  • 1




    $begingroup$
    That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
    $endgroup$
    – Daniel Lichtblau
    2 days ago















1












$begingroup$


As pointed out in this post, Mathematica has a special version of Round that




Round rounds numbers of the form x.5 toward the nearest even integer.




A comment by David G suggest that why not have differnt options Direction → "HalfDown","HalfUp","HalfEven","HalfOdd","Stochastic"



These days I need a version of Round to HalfUp. I write a quite ugly and slow function as below



myRound[x_, d_] := Module[,
c1 = (1./d)*10;
c2 = 1./d;
theDigit = Last@IntegerDigits@IntegerPart[x*c1];
If[theDigit >= 5,
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2] + 1)/c2],
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2])/c2]]]


speed test



In[267]:= 
myRound[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[267]= 30.7072, Null

In[268]:=
Round[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[268]= 0.285921, Null


So I am wondering if someone on this site already have developed an efficient toolkit for round matters?










share|improve this question











$endgroup$











  • $begingroup$
    Floor[x+0.5]?
    $endgroup$
    – Szabolcs
    2 days ago










  • $begingroup$
    @Szabolcs But Floor gives integer. Round can round at any digit
    $endgroup$
    – matheorem
    2 days ago






  • 2




    $begingroup$
    Are your aware of RoundingRule?
    $endgroup$
    – Silvia
    2 days ago






  • 1




    $begingroup$
    Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
    $endgroup$
    – Daniel Lichtblau
    2 days ago






  • 1




    $begingroup$
    That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
    $endgroup$
    – Daniel Lichtblau
    2 days ago













1












1








1





$begingroup$


As pointed out in this post, Mathematica has a special version of Round that




Round rounds numbers of the form x.5 toward the nearest even integer.




A comment by David G suggest that why not have differnt options Direction → "HalfDown","HalfUp","HalfEven","HalfOdd","Stochastic"



These days I need a version of Round to HalfUp. I write a quite ugly and slow function as below



myRound[x_, d_] := Module[,
c1 = (1./d)*10;
c2 = 1./d;
theDigit = Last@IntegerDigits@IntegerPart[x*c1];
If[theDigit >= 5,
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2] + 1)/c2],
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2])/c2]]]


speed test



In[267]:= 
myRound[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[267]= 30.7072, Null

In[268]:=
Round[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[268]= 0.285921, Null


So I am wondering if someone on this site already have developed an efficient toolkit for round matters?










share|improve this question











$endgroup$




As pointed out in this post, Mathematica has a special version of Round that




Round rounds numbers of the form x.5 toward the nearest even integer.




A comment by David G suggest that why not have differnt options Direction → "HalfDown","HalfUp","HalfEven","HalfOdd","Stochastic"



These days I need a version of Round to HalfUp. I write a quite ugly and slow function as below



myRound[x_, d_] := Module[,
c1 = (1./d)*10;
c2 = 1./d;
theDigit = Last@IntegerDigits@IntegerPart[x*c1];
If[theDigit >= 5,
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2] + 1)/c2],
Internal`StringToDouble@ToString@N[(IntegerPart[x*c2])/c2]]]


speed test



In[267]:= 
myRound[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[267]= 30.7072, Null

In[268]:=
Round[#, 0.01] & /@ RandomReal[1., 1000000]; // AbsoluteTiming

Out[268]= 0.285921, Null


So I am wondering if someone on this site already have developed an efficient toolkit for round matters?







machine-precision precision-and-accuracy round






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago







matheorem

















asked 2 days ago









matheoremmatheorem

6,65743178




6,65743178











  • $begingroup$
    Floor[x+0.5]?
    $endgroup$
    – Szabolcs
    2 days ago










  • $begingroup$
    @Szabolcs But Floor gives integer. Round can round at any digit
    $endgroup$
    – matheorem
    2 days ago






  • 2




    $begingroup$
    Are your aware of RoundingRule?
    $endgroup$
    – Silvia
    2 days ago






  • 1




    $begingroup$
    Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
    $endgroup$
    – Daniel Lichtblau
    2 days ago






  • 1




    $begingroup$
    That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
    $endgroup$
    – Daniel Lichtblau
    2 days ago
















  • $begingroup$
    Floor[x+0.5]?
    $endgroup$
    – Szabolcs
    2 days ago










  • $begingroup$
    @Szabolcs But Floor gives integer. Round can round at any digit
    $endgroup$
    – matheorem
    2 days ago






  • 2




    $begingroup$
    Are your aware of RoundingRule?
    $endgroup$
    – Silvia
    2 days ago






  • 1




    $begingroup$
    Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
    $endgroup$
    – Daniel Lichtblau
    2 days ago






  • 1




    $begingroup$
    That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
    $endgroup$
    – Daniel Lichtblau
    2 days ago















$begingroup$
Floor[x+0.5]?
$endgroup$
– Szabolcs
2 days ago




$begingroup$
Floor[x+0.5]?
$endgroup$
– Szabolcs
2 days ago












$begingroup$
@Szabolcs But Floor gives integer. Round can round at any digit
$endgroup$
– matheorem
2 days ago




$begingroup$
@Szabolcs But Floor gives integer. Round can round at any digit
$endgroup$
– matheorem
2 days ago




2




2




$begingroup$
Are your aware of RoundingRule?
$endgroup$
– Silvia
2 days ago




$begingroup$
Are your aware of RoundingRule?
$endgroup$
– Silvia
2 days ago




1




1




$begingroup$
Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
$endgroup$
– Daniel Lichtblau
2 days ago




$begingroup$
Could extend the method proposed by @Szabolcs: myRound[x_, d_] := d*Floor[x/d + 1/2]
$endgroup$
– Daniel Lichtblau
2 days ago




1




1




$begingroup$
That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
$endgroup$
– Daniel Lichtblau
2 days ago




$begingroup$
That's a result of using decimal values e.g. .01 that do not have exact binary equivalents. Could instead do myRound[8.121,1/100] and numericize afterward.
$endgroup$
– Daniel Lichtblau
2 days ago










1 Answer
1






active

oldest

votes


















3












$begingroup$

I offer the following solution



r2[x_, a_] := x - Mod[x, a, -(a/2)]


We can verify that it has the desired result, using PiecewiseExpand



PiecewiseExpand[r2[x, a], -2 a < x < 2 a && a > 0]


Performance is only a little slower than the built-in Round



list = RandomReal[0, 1, 1000000];

AbsoluteTiming[Round[list, 0.1];]
(* 0.0079, Null *)

AbsoluteTiming[r2[list, 0.1];]
(* 0.009414, Null *)





share|improve this answer









$endgroup$












  • $begingroup$
    Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
    $endgroup$
    – matheorem
    2 days ago






  • 4




    $begingroup$
    @matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
    $endgroup$
    – mikado
    2 days ago







  • 1




    $begingroup$
    @matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
    $endgroup$
    – Michael E2
    yesterday










Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193412%2fefficient-round-edition-with-different-rounding-direction%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3












$begingroup$

I offer the following solution



r2[x_, a_] := x - Mod[x, a, -(a/2)]


We can verify that it has the desired result, using PiecewiseExpand



PiecewiseExpand[r2[x, a], -2 a < x < 2 a && a > 0]


Performance is only a little slower than the built-in Round



list = RandomReal[0, 1, 1000000];

AbsoluteTiming[Round[list, 0.1];]
(* 0.0079, Null *)

AbsoluteTiming[r2[list, 0.1];]
(* 0.009414, Null *)





share|improve this answer









$endgroup$












  • $begingroup$
    Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
    $endgroup$
    – matheorem
    2 days ago






  • 4




    $begingroup$
    @matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
    $endgroup$
    – mikado
    2 days ago







  • 1




    $begingroup$
    @matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
    $endgroup$
    – Michael E2
    yesterday















3












$begingroup$

I offer the following solution



r2[x_, a_] := x - Mod[x, a, -(a/2)]


We can verify that it has the desired result, using PiecewiseExpand



PiecewiseExpand[r2[x, a], -2 a < x < 2 a && a > 0]


Performance is only a little slower than the built-in Round



list = RandomReal[0, 1, 1000000];

AbsoluteTiming[Round[list, 0.1];]
(* 0.0079, Null *)

AbsoluteTiming[r2[list, 0.1];]
(* 0.009414, Null *)





share|improve this answer









$endgroup$












  • $begingroup$
    Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
    $endgroup$
    – matheorem
    2 days ago






  • 4




    $begingroup$
    @matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
    $endgroup$
    – mikado
    2 days ago







  • 1




    $begingroup$
    @matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
    $endgroup$
    – Michael E2
    yesterday













3












3








3





$begingroup$

I offer the following solution



r2[x_, a_] := x - Mod[x, a, -(a/2)]


We can verify that it has the desired result, using PiecewiseExpand



PiecewiseExpand[r2[x, a], -2 a < x < 2 a && a > 0]


Performance is only a little slower than the built-in Round



list = RandomReal[0, 1, 1000000];

AbsoluteTiming[Round[list, 0.1];]
(* 0.0079, Null *)

AbsoluteTiming[r2[list, 0.1];]
(* 0.009414, Null *)





share|improve this answer









$endgroup$



I offer the following solution



r2[x_, a_] := x - Mod[x, a, -(a/2)]


We can verify that it has the desired result, using PiecewiseExpand



PiecewiseExpand[r2[x, a], -2 a < x < 2 a && a > 0]


Performance is only a little slower than the built-in Round



list = RandomReal[0, 1, 1000000];

AbsoluteTiming[Round[list, 0.1];]
(* 0.0079, Null *)

AbsoluteTiming[r2[list, 0.1];]
(* 0.009414, Null *)






share|improve this answer












share|improve this answer



share|improve this answer










answered 2 days ago









mikadomikado

6,7171929




6,7171929











  • $begingroup$
    Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
    $endgroup$
    – matheorem
    2 days ago






  • 4




    $begingroup$
    @matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
    $endgroup$
    – mikado
    2 days ago







  • 1




    $begingroup$
    @matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
    $endgroup$
    – Michael E2
    yesterday
















  • $begingroup$
    Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
    $endgroup$
    – matheorem
    2 days ago






  • 4




    $begingroup$
    @matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
    $endgroup$
    – Michael E2
    2 days ago






  • 2




    $begingroup$
    @matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
    $endgroup$
    – mikado
    2 days ago







  • 1




    $begingroup$
    @matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
    $endgroup$
    – Michael E2
    yesterday















$begingroup$
Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
$endgroup$
– matheorem
2 days ago




$begingroup$
Wow, great solution. But there is a issue with hidden fractions as pointed out by mathematica.stackexchange.com/q/65298/4742 . But if we use InternalStringToDouble@ToString`, the performance will drop down.
$endgroup$
– matheorem
2 days ago




4




4




$begingroup$
@matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
$endgroup$
– Michael E2
2 days ago




$begingroup$
@matheorem Technically, 1.265 in binary floating point corresponds to the fraction 5697053528623677/4503599627370496 which less than 1265/1000. The issue is due to rounding decimal to binary. Thus it is a problem of inputting the number you meant, not a problem with r2[].
$endgroup$
– Michael E2
2 days ago




2




2




$begingroup$
@matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
$endgroup$
– Michael E2
2 days ago




$begingroup$
@matheorem The problem with imprecise calculation is that unwanted errors creep in, such as what you're complaining about. :) How about this?: r2[x_, a_] := x (1 + Sign[x] $MachineEpsilon) - Mod[x (1 + Sign[x] $MachineEpsilon), a, -(a/2)]
$endgroup$
– Michael E2
2 days ago




2




2




$begingroup$
@matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
$endgroup$
– mikado
2 days ago





$begingroup$
@matheorem, I think you need to consider why you know the input is exactly 1.265 rather than a little more or a little less, and why the rounding is important to you. If you know the 3rd decimal place is exact, I suggest you multiply all your numbers by 1000, and work with integers.
$endgroup$
– mikado
2 days ago





1




1




$begingroup$
@matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
$endgroup$
– Michael E2
yesterday




$begingroup$
@matheorem That's what happens (automatically) when you use real (floating-point) numbers on all common CPUs.
$endgroup$
– Michael E2
yesterday

















draft saved

draft discarded
















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193412%2fefficient-round-edition-with-different-rounding-direction%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

He _____ here since 1970 . Answer needed [closed]What does “since he was so high” mean?Meaning of “catch birds for”?How do I ensure “since” takes the meaning I want?“Who cares here” meaningWhat does “right round toward” mean?the time tense (had now been detected)What does the phrase “ring around the roses” mean here?Correct usage of “visited upon”Meaning of “foiled rail sabotage bid”It was the third time I had gone to Rome or It is the third time I had been to Rome

Bunad

Færeyskur hestur Heimild | Tengill | Tilvísanir | LeiðsagnarvalRossið - síða um færeyska hrossið á færeyskuGott ár hjá færeyska hestinum