Skip to content

Negative stones and pounds conversion wrong under 1 stone #572

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
rickyoleary opened this issue Dec 14, 2018 · 6 comments
Closed

Negative stones and pounds conversion wrong under 1 stone #572

rickyoleary opened this issue Dec 14, 2018 · 6 comments

Comments

@rickyoleary
Copy link

rickyoleary commented Dec 14, 2018

using System;
using UnitsNet;

public class Program
{
	public static void Main()
	{
		double onePoundInKg = 0.45;
		double twoPoundsInKg = 0.90;
		
		Console.WriteLine(Mass.FromKilograms(onePoundInKg - twoPoundsInKg).StonePounds.ToString()); // -1 st -1 lb
	}
}

Fiddle here.

I'd expect this to show -0 st -1lb but currently displays -1 st -1 lb. P.S Love the library, thanks!

@angularsen
Copy link
Owner

Thanks for reporting, would you be interested in debugging this and doing a pull request?
I will be happy to assist.

@rickyoleary
Copy link
Author

I'm now looking into it, but have to be honest that units/math is not my strongest point, hence the use of this library for my project, so I'm not sure how much help I can be.

@angularsen
Copy link
Owner

Just ask if you get stuck on something you don't understand.

I recommend starting with

https://github.com/angularsen/UnitsNet/blob/master/UnitsNet.Tests/CustomCode/StonePoundsTests.cs

and adding a new test case as you wrote above, then debug why it fails by stepping through the code calls. You should be able to spot where it goes wrong. Use some values that are easy to reason about. My gut feeling tells me we have a rounding-error, so it rounds stones "down" to a more negative value than it should, since we have only tested positive values before.

@tmilnthorp
Copy link
Collaborator

Bad math using Math.Floor on negative numbers. Was also incorrect for feet/inches. Fix in PR #573.

@angularsen
Copy link
Owner

Fixed in #573 (master) and #574 (v4).

@angularsen
Copy link
Owner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants